해설

Papa brought me a packed present! let's open it.

 

이번 문제는 리버싱 문제라고 한다. 문제를 보아하니 패킹된 바이너리 일 것 같다. 우선 바이너리를 다운로드 받아서 실행 시켜 봤다.

flag를 메모리에 복사해 놨으니 가져 가란다. 그런데 바이너리가 패킹 되어 있을 것 같다. checksec으로 확인해보면 다음과 같이 바이너리가 UPX 패킹 되어 있음을 알 수 있다. UPX로 바이너리를 언패킹하면 원본 바이너리를 얻을 수 있다.

gdb를 flag로 디버깅해보면, 아래와 같이 malloc을 수행한 뒤 해당 메모리 영역에 flag 값을 복사해 넣음을 알 수 있다. 따라서 0x401184 부분이 실행 되면, flag 값이 rdx 레지스터에 들어갈 것이라고 예측할 수 있다.

0x401184 다음 인스트럭션인 0x40118b에 브레이크포인트를 걸고 rdx 레지스터를 확인해보면 flag 값을 획득 할 수 있다.

'pwn' 카테고리의 다른 글

pwnable.kr - passcode  (0) 2019.08.22
pwnable.kr - random  (0) 2019.08.16
pwnable.kr - bof  (0) 2019.08.12
pwnable.kr - collision  (0) 2019.08.10
pwnable.kr - fd  (0) 2019.08.08

+ Recent posts