Pwnable.flag 풀이.
파파가 포장된 선물을 줬다. 열어보자.
이 Flag 문제도 bof 문제처럼 바이너리가 주어졌다.
'this is reversing task. all you need is binary'
이 문구을 보니 뭔가 리버싱 문제인 거 같다.
일단 그래서 헥스에디터로 flag 바이너리를 실행해봤다.
보니까 ELF 파일에 UPX로 패킹이 된 거 같다.
일단 그러면 언패킹을 해줘야 한다.
그러기 전에 wget를 통해서 flag 바이너리 파일을 다운로드 받고, gdb를 이용할 수 있도록
chmod 775를 하여 권한을 올려준다.
일단 리버싱 문제이기 때문에 문자열이 어떤 것이 있는지 확인하고자 strings flag 명령어를 이용하여 문자열을
추출해 봤다. strings flag>flag_str.txt와 같은 식으로 파일로 문자열 추출 결과를 넘겨 받을 수 있다.
뒤져 보니 upx로 패킹되어 있음을 또 알 수 있다. HxD 에디터 사용 말고도...........이 방법으로도 알 수 있다.
cf) upx가 없다면 apt-get install upx 명령어를 이용해 다운로드하면 된다.
그 후 upx -d ./flag 명령어를 써서 패킹을 해제해준다.
flag로 검색해보면, 위와 같은 화면이 뜬다. flag는 upx...? ~!~!~~!~하는 문장이고,
그 아래 malloc하고 strcpy하여 넣어놓을테니 가져가라는 뜻의 문장도 있다.
이건 솔직히 얻어 걸린 거다................................. gdb를 사용해서 구해보겠다.
gdb로 파일을 열어 보았고, +13을 보면 puts를 통해서 문자열이 등록되고, +23 malloc를 하여 동적 할당을 하고,
인자를 집어넣는다.rdx에는 문자열이, rax에는 버퍼가 들어가기 때문에 결국 rdx 부분을 보면 flag가 나타날 것이다.
'# Related site issues > PW.KR' 카테고리의 다른 글
Pwnable.Dragon. (0) | 2018.04.08 |
---|---|
Pwnable.bof. (0) | 2018.04.05 |
Pwnable.collision. (0) | 2018.04.05 |
Pwnable.UAF. (0) | 2018.04.05 |
Pwnable.Passcode. (0) | 2018.03.28 |