Write up (Wargame)/Pwnable

[pwnable.kr] flag 풀이

그믐​ 2023. 9. 10. 01:34
반응형

 

analysis


아무 보호기법도 없고,

 

실행하면 다음과 같이 나온다.

64bit 파일이므로 ida로 분석해본다.

 

syscall 을 보려고 strace -i 한다. mmap을 사용한다.

 

동적 분석을 하다보니, mmap으로 새로 만든 공간에 기존 코드 영역을 복사하는 부분이 있다. https://b.mytears.org/2008/08/666/

 

메모리 복사 코드 최적화…

kldp 를 눈팅하다가 오늘 재밌는 문서를 읽게 되었습니다. 2001년도에 AMD 에서 나온 문서였는데, 그 내용이 상당히 흥미로워서 몇 가지 내용을 옮겨볼까 합니다. 메모리에서 연속된 값들을 다른 곳

b.mytears.org

 

 

돌아가서 이후 실행하는 코드를 ida로 확인하고 continue.

근데 이제 보니까 이건 리버싱 문제였다.

 

리버싱 문제니까 IDA로 문자열이라도 확인해본다.

문자열이 생각보다 얼마 없다.

그리고 모든 문자열들이 수상하게 생겼다..

 

첫 번째 문자열을 xref가 없다. 아마 이걸 되돌려서 flag를 만들거라는 예감이 든다.

 

두 번째 문자열은 주석같은 느낌이다. 뭔가 일부러 안 지운거 같은데.

실제로 upx.sf.net이 있다.

 

그리고 UPX는 실행 파일 압축 프로그램이라고 하니까 해당 부분에서 UPX를 압축 해제하면 다른 프로그램이 나올 가능성이 있다.

 

proc/self/exe도 이를 위한 발판일수도..? 모르겠다.

 

string 뽑아도 UPX가 있네. 이쯤되면 UPX를 한 번 조져봐야 한다.

 

https://github.com/upx/upx/releases/tag/v4.1.0

 

Release UPX 4.1.0 · upx/upx

Please see the file NEWS for a detailed list of changes. Note: all versions are functionally equivalent, i.e. each version can handle all executable formats, so you only need the file that runs on ...

github.com

 

 

여기서 설치한다.

 

설치된 upx를 실행해서 보면 decompress 옵션을 주면 될 것 같다.

 

따로 upx폴더에 복사해두고 명령어를 실행하니 뭔가 된 것 같다.

 

이후 해당 파일에 대해 info func을 수행했는데 무언가 된 모습. 정적 링크 되어있는 것 같다.

이제 본격적으로 분석을 해보자.

 

solution


upx를 uncompress 한 파일을 IDA로 실행했더니 행복하다.

이걸 분석하면 될 것  같다.

 

이후에는 그냥 바이너리 열고 프로그램대로 따라가서 보면 해당 공간에 플래그가 적혀있다.

히히.

 

반응형