Top

[pwnable.kr]_Input문제풀이

모의해킹/[CTF] pwnable.kr

2022. 2. 27.

난이도가 상당합니다 ōxō

익스플로잇 같은 경우

외부 다른 분 익스플로잇

을 참고했습니다.

소켓 프로그래밍으로

추정되는데 마치 집에

나뒹구는 오래된

소켓 프로그래밍 책

이랑 참고해야겠습니다.

김종성

스샷.1

역시 마이웨이 직역으로 지문은 다음과 같습니다.

Mom? how can I pass my input to a computer program?

(으따 입력 내용을 컴퓨터 프로그램에다 으따 전달해야 되나?)

스샷.2

그럼 바로 접속해봅니다.

ssh input2@pwnable.kr -p2222 (pw:guest)

그리고 역시 ls를 입력해보면

파일이 총 3개가 보입니다.

그리고

cat 명령어로

input.c

을 확인해봅니다.

스샷.3

엌ㅋㅋㅋㅋㅋㅋ

이번 소스코드는

매우 깁니다ōxō

매우 깁니다ōxō

전체적으로 보았을 때 Stage1을

통과하기 위한 조건을 봅시다.

: )

코드.1

1. 인자의 개수 = 100

2. argv[‘A’] = \x00

3. argv[‘B’] = \x20\x0a\x0d

이면 스테이지 1이 완료돼갑니다.

코드.2

스테이지 2입니다.
stdin으로 \x00\x0a\x00\xff
입력을 주고
sterr로
\x00\x0a\x02\xff을

주어야 완료가 됩니다.

코드.3

stage 3입니다.
환경 변수입니다
\xde\xad\xbe\xef라는
환경 변수에
\xca\xfe\xba\xbe

값을 넣어주면됩니다.

코드.4

Stage 4입니다.
\x0a라는 파일을 열고,
읽어온 첫 4바이트가
\x00\x00\x00\x00

이어야 완료가 됩니다.

코드.5

stage 5입니다.
atoi(argv[‘C’]) = argv[‘C’]
의 정수형으로 변화한 값을
포트 번호로
소켓 서버를 열고

\xde\xad\xbe\xef

을 보내주면

stage5가 완료됩니다.

그럼 익스플로잇 시도하겠습니다.

아직 직접 짜는 실력은 없어

이 분의 익스플로잇 코드

를 참고하겠습니다

Python으로 작성

되었습니다.

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
from pwn import *
 
prog = []
prog.append(“/home/input2/input”)
#prog.append(“./test”)
for i in range(99):
    prog.append(“A”)
prog[ord(“A”)]=“”
prog[ord(‘B’)]=“\x20\x0a\x0d”
prog[ord(‘C’)]=“35790”
 
conn = process(prog, stderr=open(“stderr”,‘r’), env={“\xde\xad\xbe\xef”:“\xca\xfe\xba\xbe”})
print(conn.recvuntil(“Stage 1 clear!”))
 
f = open(“\x0a”,‘w’)
f.write(“\x00\x00\x00\x00”)
f.close()
 
conn.sendline(“\x00\x0a\x00\xff”)
print(conn.recvuntil(“Stage 4 clear!”))
 
#sleep(3)
reconn = remote(“127.0.0.1”, 35790)
reconn.send(“\xde\xad\xbe\xef”)
reconn.close()
 
print(conn.recvline())
print(conn.recvall())
 
conn.interactive()
 
cs

코드. 6

허나 이 코드는 현 디렉터리에는

사용할 수가 없습니다.

권한이 없기 때문…。

그래서 권한이 있는 /tmp

를 이용해야 한다고합니다.

 

그럼 /tmp에서

진행해보겠습니다.

그리고 앞서 깜빡하고

스크린샷 찍어두는 게 빠졌는데

그양 실행하면 플래그 파일이

없다면서

 

플래그가 뜨지를 않아

ln -s /home/input2/flag flag

이렇게 심블릭을 걸어주고

시도를 해야 합니다.

그럼 이제 심블릭을 걸어두고

진행을 하면

스샷.4

잠시 후에 민트색으로

그 여진 부분이키값입니다.

이렇게 받아챙긴 키값으로

스샷.5

처음 화면으로 돌아와서

빈칸에 입력하고

auth 버튼을 누르면 됩니다.

그리고 미션이 완료된 동시에

4포인트 받아챙기고

그리고 돌아와보면 이렇게

풀었다는 뜻으로 녹색 점선으로

표시가 되었습니다.

긴 글을 보시느라 감사합니다.

수고하셨습니다: )

좋은 하루 되시고 하시는 일 잘 되시고

날이 덥습니다 더위 먹지 않게 유의하시고

코로나 조심하세요 : )

'모의해킹 > [CTF] pwnable.kr' 카테고리의 다른 글

[pwnable.kr]_Random문제풀이  (0) 2022.02.27
[pwnable.kr]_Ieg문제풀이  (0) 2022.02.27
[pwnable.kr]_passcode문제풀이  (0) 2022.02.27
[pwnable.kr]_Memcpy문제풀이  (0) 2022.02.27
[pwnable.kr]_Collision 문제풀이  (0) 2022.02.27