안경잡이개발자

728x90
반응형

pwnable.kr - flag 문제풀이(Write Up)

문제 분류: 리버싱(Reversing)

 

  이번 시간에 풀어 볼 문제는 pwnable.kr의 flag입니다. 이 문제는 가장 기본적인 리버싱(Reversing) 도구를 활용하는 문제입니다.

 

  ▶ 문제풀이 사이트 주소: http://pwnable.kr/play.php

 

 

  위 URL에 명시되어 있는 곳으로 접속하면, 하나의 파일이 다운로드 됩니다. 파일은 flag이며, 이 프로그램을 분석하면 되는 문제입니다.

 

 

  분석을 위해 IDA Pro 32bit 버전을 실행합니다.

 

 

  다음과 같이 프로그램을 열 수 있습니다.

 

 

  다만, 프로그램이 32bit 프로그램이 아니라 64bit라고 하네요.

 

 

  따라서 IDA Pro 64bit 버전을 실행해서 다시 엽니다.

 

 

  이제 분석된 소스코드를 확인합니다. [Graph View]로 보면 정상적으로 코드를 분석하기 어렵습니다.

 

 

  따라서 스페이스 바(Space Bar)를 눌러서 [Text View]로 접속합니다.

 

 

  다만, 어셈블리어가 정상적으로 출력되지 않는 것을 알 수 있습니다. 이럴 때는 일단 프로그램에 포함되어 있는 Strings에 대한 정보를 확인하면 됩니다. 따라서 [Quick View(Ctrl + 1)]을 확인하여, [Strings(Shift + F12)]를 열면 됩니다.

 

 

  그러면 다음과 같이 UPX에 대한 내용을 확인할 수 있습니다. 바로 이 UPX 때문에 우리의 프로그램이 정상적으로 분석되지 않고 있다는 것으로 이해할 수 있습니다.

 

 

  이는 프로그램이 UPX(Ultimate Packer for eXecutable)를 이용하여 패킹되어 있다는 것을 암시합니다. UPX는 다양한 파일 포맷을 지원하는 실행 파일 압축 프로그램입니다. 실행 파일 압축을 하게 되면, 파일의 크기를 줄일 수 있으며 기본적인 리버싱을 방어할 수 있다는 장점이 있습니다.

 

  또한 이와 같이 패킹(Packing) 처리가 된 프로그램을 다시 언패킹(Unpacking)해서 원래의 소스코드를 제대로 확인할 수 있습니다. 언패킹 도구는 다음의 경로에서 확인할 수 있습니다.

 

https://github.com/upx/upx/releases/tag/v3.94

 

upx/upx

UPX - the Ultimate Packer for eXecutables. Contribute to upx/upx development by creating an account on GitHub.

github.com

 

  윈도우 사용자의 경우 upx394w.zip을 다운로드 받아서 압축을 풀어줄 수 있습니다.

 

 

  이제 압축을 푼 폴더에 flag 프로그램을 위치시킵니다.

 

 

  이후에 명령 프롬프트(CMD) 상에서 해당 폴더로 이동하여 upx -d [파일 이름] 명령을 이용하여 특정한 파일을 언패킹 할 수 있습니다.

 

 

  이후에 다시 언패킹 된 flag 파일을 IDA Pro 64bit로 열면 다음과 같이 깨지지 않고 코드가 나옵니다.

 

 

  이제 [Text View]를 확인하면 Flag 값을 확인할 수 있습니다. 이것은 전체 플래그 값이 아니며, 플래그 값을 얻기 위해서는 직접 분석해보시는 것을 추천드립니다.

 

 

728x90
반응형