* 서니나타스의 바이너리문제 11번이다!

프로그램을 실행하면 아래와 같다.




(프로그램 실행)



올리디버거를 이용하여 문제를 해결하였다.
참조된 문자열을 먼저 확인하였다.



(문자열)



내가 찾고싶은 인증키 문자열이 있는 쪽의 함수를 찾아야하므로 Authkey 문자열이 존재하는 위치로 달려가서 그 해당 함수에 BP를 설치한다.



(BP 설치)



그 후 달린다!




(입력)



입력은 알아보기 쉽게 D 여러개 입력!

그리고 아래로 쭈욱 가니 뭔가의 문자열들이 있고 이 문자열들 하나씩 함수에 들어간다.
같은 함수이다.


(뭔가 작업하는 부분)


일단은 큰그림을 보기위해 넘어간다.!
이러한 문자열들이 하나씩 함수에 들어가구나 정도만 파악하였다.

아래를 보니 내가 보고싶은 문자열 Congratulation 문자열 바로 전에 분기문이 존재하고 
그 분기문 위에 어떤 함수를 호출하고 있는게 보인다.



(분기문)



아마 이 함수에서 결정이 나는 듯 하다.
확인!


(비교 과정)


들어가보니 뭔가를 비교하고 있다.

EAX와 EDX를 비교하고 있는데 이 두 값을 확인해봐야겠다.



(레지스터 확인)



아하.! 내가 입력한 값과 어떤 문자열을 비교하고 있다.

위의 함수들을 확인해본 결과 해당 문자열들을 이리저리 배치한 문자열이었다.

이 문자열을 입력값으로 입력하여 실행하였더니?




(인증키 등장)



인증키가 등장하였다.

이 값을 인증값에 넣었더니 문제 해결!



(문제 해결!)



서니나타스의 10번 바이너리 문제이다!

프로그램을 실행시켜보면 아래 같이 실행된다.



(프로그램 실행)



뭔가 값을 입력하는데 이것 또 flag를 찾아서 입력하는 것 같다.






(프로그램 실행)



흐음.. 근데 풀면서 몰랐던 거인데
올리디버거로 실행이 안된다..



(올리디버거 실행)



게다가 attach 도 안된다..?!




(attach 실패)



이게 뭐람 
하고 키 문자열 찾는거니까 헥스에디터로 열어봤다.
암.복호화 같은 과정이 없다면 문자열이 그대로 있지 않을까 싶어서 확인해보았다.



(헥스에디터로 확인)



그런데?...



(뭔가 발견)



Authkey : ~~~ 라고 나와있다.
?... 이건 또 뭐람...

혹시나 하는 마음으로 입력해보았다.



(인증성공)



얼떨결에 뒷걸음 치다 풀었다. (???... 이상함이다.)

인증 문자열에 PEID를 쓸줄 아냐고 도발하길래
(사실 이때 몰랐다.)

검색을 하여 사용해봤다.



(PEID)



PEID로 문제 파일을 열어보았다.




(PEID로 열어봄)



음 그런그런 파일 내용이구만
그런데.. 다른 PE 뷰어랑 좀 다른 느낌이 들었다. 개발된 언어도 알려주고있다...

C# ?

C#은 뭐지? -> 인터넷검색... (모르는게 많다.. ㅜ)

C#이 뭔지 검색해서 읽고 있던 중 눈에 띄는 걸 발견했다.



(C#)



으흐음 .. 자바 같이 가상머신 위에서 돌아간다라는 말이다.
그래서 올리디버거에서 실행이 안되었던건가?..

나는 이 파일을 분석해보고 싶어 올리디버거로 C# .net 프로그램을 여는 방법을 검색해 보았다.
그런데 C# 프로그램은 올리디버거로 열수 없고... 다만 C#은 좋은 디컴파일러가 많기 때문에 구지 디버거로 분석할 이유가 없다는 글을 보았다.

추천 받은 디컴파일러는 dotpeek 이었다. 다운 받고 열어보니..
세상에 이런일이



(dotpeek)



누가봐도 읽을 수 있는 코드로 나왔다...
(신기하다...)

이렇게 문제를 해결하였다.


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

(40/500) Wargame.kr - EASY_CrackMe  (0) 2017.06.27
(39/500) Suninatas - Binary(11)  (0) 2017.06.27
(37/500) Suninatas - Binary(9)  (0) 2017.06.27
(36/500) Lord of the BOF - death_knight  (0) 2017.06.27
(35/500) Lord of the BOF - xavius  (0) 2017.06.25


최근 리버싱 공부를 시작했다. 
책 한권을 끝낸 기념으로 리버싱문제를 풀어볼 것이다.

이제 내가 풀이에 접근 가능한 영역이 리버싱이 추가됬다는 사실에 기쁘다!!! :)

써니나타스의 Web 문제만 풀었었는데 이제 Binary 문제도 풀어주마!

9번 문제를 풀 것이다!



(Binary 9번문제)


파일을 다운받으니 Project1 이라는 실행파일이 보인다.




(실행 파일)



올리디버거로 열어본다!





(올리 디버거 실행)



Main 함수에 찾아가는 방법이 여러가지 있겠지만 문자열을 이용해 찾아보겠다.



(사용된 문자열)


사용된 문자열들을 보니 Congratulation ??? 
느낌이 딱 왔다. 어찌저찌 조건을 만족하면 이 문장을 출력해주는구나.

실제 실행파일을 실행해보면 입력하는 란이 나오고 거기에 입력하여 프로그램을 실행시키는 방식이다.
어떤 특정 값(키)를 입력하면 이 문구가 나오는가보다.

냉큼 그 자리로 달려가 Main 함수 시작부분에 BP를 설치해준다.



(BP 설치)


그리고 여기까지 달려준다.

중간에 퍼즈 당하면서 창이 하나 뜨고 입력하라고 나온다. 입력하지 않으면 실행이 안되는데 아마 입력하고 클릭을 누르는 순간 내가 생각하기에 main 함수인 저 함수로 넘어오는 가 보다! 라고 생각했다.
여튼! 우리의 목적은 축하 메세지를 받는 것이므로 이 함수를 분석해야하는 것은 맞다! 메인함수든 뭐든!

입력 값은 D를 몇개 적어주었다. 헥스값으로 보면 0x44 이기 때문에 쉽게 눈에 띌거 같아서 D 몇개를 넣었다.



(D 입력)



이 함수의 맥락을 보니 분기문 전에 CALL을 하는데 여기서 분기문이 갈라지는 조건을 체크하는 듯 했다.



(분기문 전 CALL)



이 함수 안으로 들어가서 봐야겠다.



(분기문 전 CALL 함수)



보니보니 EAX 값을 ESI 에 넣고, EDX를 EDI 넣고 비교한다.

EAX와 EDX에는..!



(레지스터)



내가 입력한 D 여러개와 어떤 문자열이 들어있었다. 
아! 이 문자열과 비교를?



(문자열 입력)



적혀있는 문자열을 적어보았다.



(축하메세지)



???

축하메세지가...
이 키를 입력하면 인증에 성공한다.


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

(39/500) Suninatas - Binary(11)  (0) 2017.06.27
(38/500) Suninatas - Binary(10)  (0) 2017.06.27
(36/500) Lord of the BOF - death_knight  (0) 2017.06.27
(35/500) Lord of the BOF - xavius  (0) 2017.06.25
(34/500) Lord of the BOF - nightmare  (0) 2017.06.23

+ Recent posts