flag 문제이다!

문제를 풀다보면서 느낀거지만 조금 이 사이트 문제들이 짜임새 있다.
한단계 나가면서 조금씩 알아가는 느낌이 든다. :)

flag 문제 클릭!


(flag 문제)



문제를 보자


(문제 화면)



파파가 포장이된 선물을 주었다.
packed 라는 표현을 봐서 packing 된 실행파일인듯 하다. (느낌에)

일단 파일을 받아보자!



(파일 확인)



파일을 readelf 로 확인해보니 섹션이 없다.
패킹 되어있는 듯하다.

헥스 에디터로 확인해본다!



(바이너리 확인)



UPX로 패킹되어있는 것을 알 수 있었다.

먼저 UPX로 언패킹 해준다.



(언패킹)



그리고 다시 한번 확인해보자.



(flag 파일)



섹션 내용들이 자세히 나온다.
이제 디버깅 할수 있게 되었다.
그리고! 캡쳐는 깜빡했지만 실행하게되면
malloc을 실행하고 그 공간에 flag를 strcpy 할거야~ 라는 힌트가 나온다.

gdb를 열어 확인!


(main)


main 함수를 보니 malloc 함수가 호출되고 아래에 함수가 하나 더 호출된다.
함수가 하나밖에 없으니 보나마나다 이게 strcpy이다.

그러면 strpy하기 전에 break 하기!



(break 걸기)


자 이제 실행 한 후
실행 전 rax [eax] 를 확인한다.
-> 64비트에서는 함수 인자를 레지스터에 담아 넘기기 때문이다.
즉 rax 위치에 flag들이 복사될 것이다.   




(복사될 곳 확인)



strcpy까지 실행 후 이 주소의 값들을 보면 뭔가 채워져있다.



(flag)


이 값들을 string으로 보면 flag를 확인 할 수 있다.



(문제 해결)

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

(48/500) pwnable.kr - random  (0) 2017.07.06
(47/500) - pwnable.kr - passcode  (0) 2017.07.06
(45/500) - pwnable.kr - bof  (0) 2017.07.05
(44/500) - pwnable.kr - collision  (0) 2017.07.05
(43/500) - pwnable.kr - fd  (0) 2017.07.05

+ Recent posts