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 |