이번에 풀어본 문제는 mistake!



(mistake 문제)



아래는 문제화면이다.



(mistake 문제화면)



일단 로그인!
소스코드를 살펴보자



(소스코드)



소스코드를 보니 내가 읽을 수 없는 파일을 읽어서 그 값과 내가 입력한 값을 비교하고 있다.
어떻게 맞추지...

그런데 문제 화면에서 진지하게 생각하지말라고 나와있다. 단순한 실수라고
연산자 우선순위 실수?
아무리봐도 특별한 연산자가 없는거 같은데... 괄호를 잘 뒤져봤다.

?!?!?!?


(이상함 발견)



이상함이 발견되었다.
fd에 들어가는 값이 open 이 아니라 bool 연산값?? password 파일의 fd가 0보다는 클테니...
이 비교는 거짓이 되고 고로 fd에는 0이 들어가게 된다..

fd 0은 표준 입력이다.
즉 내가 입력한 표준 입력과 비교하는 것이다. 오케이!

내가 패스워드로 입력한 값을 xor 연산 해주므로 그 함수를 고대로 복붙해서
내가 입력할 것을 넣어서 비교해본다.



(xor)


내가 A 10개를 입력할 것이므로 xor 하면 @ 10개가 된다. 즉 표준입력으로 @ 10개를 입력하고
패스워드로 A 10개를 입력한다.

exploit을 만들어보자.


(exploit 코드)


그 전전 문제에서 표준입력하는 방법을 배워서 여기서 써먹을 수 있었다.

@10개를 입력한 후, A 10개를 입력해준다.! 구분자는 \n 개행으로 하였다.


(문제 해결)



문제해결!


'WarGame > 500 Project' 카테고리의 다른 글

(52/500) pwnable.kr - coin1  (0) 2017.07.12
(51/500) pwnable.kr - shellshock  (0) 2017.07.11
(49/500) pwnable.kr - leg  (0) 2017.07.10
(48/500) pwnable.kr - random  (0) 2017.07.06
(47/500) - pwnable.kr - passcode  (0) 2017.07.06


리버싱 문제를 풀다 너무 재밌어보이는 사이트를 발견하여 또 시작하게된 사이트...

pwnable.kr 이다.! 뭔가 내용도 스토리가 있어보인다.
아주 초보단계부터! 해보기!

사이트 화면


(사이트화면)



제일 앞에 문제 fd 문제부터 풀어보겠다.



(fd 문제)


Linux의 파일 디스크립터를 알아야한다는 그런 내용인거 같다.

일단 처음이니 접속을 해보자!



(접속!)


오호~ 첫화면~~

fd로 로그인하여 확인해본다.



(파일들)


먼저 소스코드를 확인해본다.



(소스코드)


소스코드를 확인해보니
어떤 조건들을 만족시켜서 fd_pwn 권한으로 flag 파일을 읽어주게 하는게 목표인것 같다.

처음에는 파일을 만들고 거기에 LETMEWIN\n 을 입력하여 이 파일 디스크립터를 입력해주어야겠다라고 생각하고 시작하다가 표준입력이 문득 생각이 들었다.

LETMEWIN\n을 표준입력으로 주고 fd를 0으로 만들면 되지 않을까?



(공격!)


여기서 한번의 실패를 겪었다.

하지만 strcmp는 마지막에 Null을 비교한다는 사실이 퍼뜩생각이나 혹시나 하는 마음으로 마지막에 널을 넣어주고 공격해보았다.



(공격)


성공! 
첫문제는 조금 간단하지만 신선했다.! (이전에 풀던문제들과 달랐다.)

'WarGame > 500 Project' 카테고리의 다른 글

(45/500) - pwnable.kr - bof  (0) 2017.07.05
(44/500) - pwnable.kr - collision  (0) 2017.07.05
(42/500) - Lena's Tutorial 01  (0) 2017.07.05
(41/500) Wargame.kr - Crypto Crackme Basic  (0) 2017.06.28
(40/500) Wargame.kr - EASY_CrackMe  (0) 2017.06.27

+ Recent posts