[pwnable.kr] flag - 7 pt
flag!! flag를 얻자! ( + 비공개글을 제외한 200번째 글이다! )
아빠가 packed present를 가져왔고 열어보려고 한다~ 라는게 문제다.
flag binary파일을 다운받을 수 있고, elf파일이다. 리눅스에서 file명령어를 통해 더 자세히 알 수 있다.
flag를 실행하면 "I will malloc() and strcpy the flag there. take it." 라는 문자열이 나오고 프로그램이 종료된다.
먼저 gdb로 분석하려하였으나 main의 링크를 삭제한것인지 디스어셈블링할 수 없었다. 그래서 Ida를 통해 분석하려하였으나,
어디를 보아도 flag를 실행하였을때의 문자열이 보이지않았고, 작동하는 루틴도 뭔가 이상하여서 조금 삽질을 많이 했다.
그러다가 문제의 reversing task란 것과 packed를 보고 pack된 파일이란 것을 떠올렸고, 말만 들어본 unpacking을 처음으로 공부해보았다...
일단 IDA의 String window를 통해서 UPX로 패킹된 파일이란 것을 알 수 있었다.
그럼 바로 언팩을 해보자.
리눅스에서 간편하게 할 수 있었다..
upx -d flag 를하면 쉽게 언핵해준다.
급한데로 gdb로 실행하여보니, 확실히 malloc한 후, strcpy로 flag를 복사하는 것 같다.
대충 strcpy로 보이는 함수를 부르기전에 인자를 넣는 과정에 브레이크를 건 후 무엇이 들어가는지 출력시켜보았다.
와웅... 저게 아마 플래그같다.
플래그가 맞았다 ㅋㅋㅋㅋ
심심하니까 IDA로 언팩된 파일을 한번 봐보자.
오우.. 아까와 달리 뭔가 main도 있고 다 잘보인다 굿굿
플래그 역시 찾아볼 수 있다. ~~ 굿
'Wargame > Pwnable.kr' 카테고리의 다른 글
[pwnable.kr] echo1 - 25 pt (0) | 2018.05.26 |
---|---|
[pwnable.kr] coin1 - 6 pt (0) | 2018.05.15 |
[pwnable.kr] input - 4 pt (0) | 2018.05.10 |
[pwnable.kr] lotto - 2 pt (0) | 2018.05.10 |
[pwnable.kr] bof- 5 pt (0) | 2018.05.09 |