이번에는 Pwnable.krflag 문제를 풀어 보았다. flag 문제는 pwnable 문제가 아니라 reversing 문제이다.

문제를 클릭하면 아래와 같이 다운로드 받을 수 있는 링크와 reversing 문제라는 설명이 나온다.

문제를 다운받아 파일의 정보를 확인 해 보았다.

64 비트 elf 파일임을 확인할 수 있다. 파일을 실행 해 보았더니 아래와 같은 문자열을 확인할 수 있었다.

파일을 분석하기 위해 IDA를 통해 열어보았다. 그런데 파일을 열어보았더니 함수는 3개밖에 없고 분석할 수가 없다. 파일을 실행했을 때 출력되는 I will malloc() and strcpy the flag there. take it. 문자열을 찾기 위해 바이너리의 문자열들을 확인 해 보았다. 문자열을 확인 해 보았더니, I will malloc() and strcpy the flag there. take it.는 없지만, 아래와 같이 upx 관련 문자열을 찾을 수 있었다.

아무래도 upx 패킹 된 파일인 것 같아 upx 언패킹을 해 보았다.

정상적으로 언패킹 되었다. 언패킹 된 파일을 다시 IDA를 통해 열어 보았다.

main 함수를 확인해 본 결과 위와 같은 코드를 볼 수 있었다. 파일을 실행했을 때 확인할 수 있는 문자열을 puts 함수를 통해 출력하고, malloc를 통해 100 byte를 할당한 후, strcpy 함수를 통해 flag의 내용을 해당 위치에 복사한다. 이에 flag의 내용을 확인 해 보았다.

위와 같이 바로 flag 의 값을 확인할 수 있었다.

1
FLAG : UPX...? sounds like a delivery service :)