본문 바로가기
[ ★ ]Study/War Game

[Toddler's Bottle] pwnable.kr flag

by nroses-taek 2017. 8. 17.


위 적혀있는 주소에서 파일을 다운로드 해봅시다.

리버싱을 해보라고 하네요 %_%

파일을 다운받고 hex editor로 열어보았습니다. 기본적으로 파일을 다운 받았으면, 어떤 파일인지는 알아봐야겠죠..?

리눅스 실행파일임과 동시에 UPX로 패킹되어 있음을 알 수 있습니다.

UPX는 Tool과 Manual 2가지 방법을 Unpacking 할 수 있는데 간단하게 Tool로 하겠습니다.

<-------------UPX 다운로드 방법------------------->
UPX 툴을 다운합니다.
현재 날짜 기준으로 최신으로 다운 받습니다.

현재 기준입니다.
가장 대표적인게 가지 이며, Win32라고해서 64비트에서 못쓰는 것이 아니므로, 64비트인 분들도
Win32 다운받아줍시다.

압축 해제하고, CMD(명령 프롬프트)를 열어서 해당 폴더로 이동시켜줍니다.
패킹된 파일도 같은 폴더에 위치시키면 편합니다.

사용 방법은
upx -d [파일명] 이 되겠습니다.

해당 파일을 Unpacking 하셨으면

바이너리는 이렇게 바뀌셨을 겁니다.


유명한 IDA 리버싱 툴보단 gdb 이용하겠습니다.

intel 문법이구요. main 열어보면 <+32> 부분에 친절하게 flag라고 알려줍니다.

부분의 명령은 rip+0x2c0ee5 rdx라는 레지스터에 mov하게 되는데,

저희는 그러면 명령 구문을 실행한 부분 <+39> 브레이크를 걸고 실행시켜봅시다.

아까 명령에도 봤듯이, rdx 레지스터에 값을 저장시키니, 저희는 String으로 rdx값을 확인해보면 끝입니다.


IDA는 Unpacking 한 파일을 열고 String만 확인해주면 간단하게 가능합니다. ^^


댓글