0. 근황

 Holly Shit... 가족초청행사 + 휴가 + 외할아버지 팔순잔치 + 계단에서 미끄러져서 왼손다침 콤보로 인해 많이 지체됨...ㅠㅠ

 

1. slv.py

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
from pwn import *
 
# Stage 1
argvs = [str(i) for i in range(0,100)]
argvs[ord('A')] = '\x00'
argvs[ord('B')] = '\x20\x0a\x0d'
argvs[ord('C')] = '8889'
 
# Stage 2
with open('./stderr''a') as f:
        f.write('\x00\x0a\x02\xff')
 
# Stage 3
enVal = {"\xde\xad\xbe\xef" : "\xca\xfe\xba\xbe"}
 
# Stage 4
with open('./\x0a''a') as f:
        f.write('\x00\x00\x00\x00')
 
= process(executable = '/home/input2/input', argv=argvs, stderr = open('./stderr'), env = enVal)
 
# Stage 2
p.send('\x00\x0a\x00\xff')
 
# Stage 5
= remote('localhost'int(argvs[ord('C')]))
r.send('\xde\xad\xbe\xef')
 
# IO_Sink
sleep(0.1)
print p.recv()
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter

2. 주의사항

 Pwnable.kr 서버에 접속해서 문제를 풀 때 /tmp에 자신의 폴더를 만들고 폴더안에 slv.py를 만들어서 진행하는데 마지막에 system("/bin/cat flag")부분이 실행되지 않는 경우가 보일 텐데 자신의 폴더안에 flag 파일이 없어서 출력이 안되는 현상이다. 따라서 ln -s /home/input2/flag ./flag를 통해서 심볼릭 링크를 걸어주고 실행하면 flag를 얻을 수 있다.

 

[깨달은 점]

 1. Pwntools의 기능은 많다.

  솔직히 argv를 넣는 기능이 있을 것이라고 예상은 했지만 stderr를 설정하거나 환경변수를 설정하는 것 까지 있을 줄은 몰랐다. 잘 활용하자.

 

 2. Port 번호 오류(?)

  한 번 실행하고 난 port를 다시 열려고 할 때 port가 사용중이라고 에러가 뜨는 것 같다.... 왜지..?

 

 3. IO_Sink

  30번줄에 sleep(0.1)은 IO_Sink가 맞질 않아서 flag값이 출력이 안되는 현상이 보여서 넣어주었다. print p.recv() 대신에 p.interactive()를 사용하면 sleep(0.1)을 사용하지 않아도 됨.

 

 

+++

WriteUp을 봐버렸다.. ㅠㅠ

'System > pwnable.kr' 카테고리의 다른 글

[Pwnable.kr] - uaf - 190912  (0) 2019.09.12
[Pwnable.kr] - leg - 190711  (0) 2019.07.11
[Pwnable.kr] - fix - 190622  (0) 2019.06.22

+ Recent posts