pwnable.kr (flag)
이번 문제는 리버싱인 것 같다. 바이너리 파일만 제공하고 있다.
wget을 이용하여 바이너리 파일을 받아오자.
flag 파일에 실행권한을 주고 실행시켜보았다.
malloc() 과 strcpy에 플래그가 있다고한다.
gdb를 이용하여 디버깅을 하려 하였으나 실패하였다.
마찬가지로 다른 디버거를 이용해도 디컴파일에 실패했다고 한다.
이유를 찾아보자.
strings 명령어를 이용하여 바이너리 파일에서 문자열만 볼 수 있다.
여기에서 제일 하단에 UPX!가 눈에 띈다.
UPX?
UPX란 패커 중 하나이다. 패커란 패킹을 해주는 도구를 말한다.
패킹?
패킹이란 실행 파일 압축을 의미한다.
패킹을 하는 이유는 다음과 같다.
- PE 파일의 크기를 줄이고자 하는 목적
- PE 파일의 내부 코드와 리소스를 감추기 위한 목적
- 등등
풀이
다음과 같이 grep UPX를 하면 이 파일은 UPX에 의해 패킹되었다고 알려준다.
따라서 언패킹을 진행해주면 된다.