본문 바로가기

Hacking/Pwnable

[ pwnable.kr ] flag 문제풀이

....?

이번문제는 평소대로 이미지를 클릭해서 봤더니, 웬 다운로드 경로를 하나만 있었다.

flag문제 화면

이게 뭔가하고 다운부터 받아보니 웬 파일이 다운로드 됐다. 근데 이걸 쓰기 전에 문제 힌트로 이 문제는 reversing(리버싱) 문제라고 떡하니 쓰여져 있다. ( 왜 pwnable에서 reversing을 하는지..? )

우리가 reversing을 공부하는중이 아니긴 하나 pwnable에서 reversing은 생각보다 많이 쓰이는데, gdb를 이용한 메모리 분석이다.

일단 이런건 제쳐두고 어떻게 문제를 푸는지 알아보자. 일단 이게 뭔지 모르니 실행을 시켜봤다. 실행시켜봤더니 다음과 같은 힌트가 출력됐다.

출력된 힌트

malloc함수에 flag를 복사한다는 말 같은데, 말만으로는 잘 모르겠다. 이 파일을 뜯어봐야 할 것 같으니 디버거를 사용해야 할 듯 하다. 나는 디버거중 IDA라는 디버거를 사용하려 한다.

IDA로 flag를 디버깅한 화면

하지만 눈이 빠지게 코드를 뒤져봤지만 나온거라고는 upx라고 처음보는 형식(?) 뿐이었다.

검색해보니 upx패킹이라는 것이 되어있는가 보다, 잠금형식이라는 것 같다.

( String으로 이동하여 확인 )

upx를 검색하면 언패킹이라는 것이 같이 나오는데 언패킹을 한 번 시도해보자 

우선 upx 언패킹을 진행하기 위해 아래 주소로 이동해서 upx394w를 다운로드 받아야 한다.

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

 

다운로드 파일

그 뒤 압축해제한뒤 cmd를 실행시켜 압축해제 시킨 파일로 이동한다.

압축을 푼 파일에 있는 upx응용프로그램을 이용하기 위해서는 이동이 필요하다. )

그 후 flag파일을 언패킹하기 위해서 다음 명령어를 입력한다.

upx -d ( flag파일이 있는 경로 ) 

나는 upx394w아래에 있는 downloads폴더에 flag를 깔아놨기 때문에 ../flag를 경로로 주었다.

( .. 은 이전 디렉토리를 뜻한다. )

 

upx 언패킹된 화면

이제 IDA로 다시 열어보자

IDA로 언패킹된 flag를 열고 shift + f12를 눌러 string을 확인해보니 뭔가 많아진걸 알 수 있었고 그렇게 읽어 내리다보니 flag를 실행시켯을때 나오는 문장과 같이 어떤 물자열이 하나 더 있는걸 발결했다 정답으로 입력해보니 맞았다.

flag : UPX...? sounds like a delivery service :)

'Hacking > Pwnable' 카테고리의 다른 글

[ pwnable.kr ] random 문제 풀이  (0) 2019.09.04
[ pwnable.kr ] passcode 문제풀이  (0) 2019.08.30
[ pwnable.kr ] bof 문제풀이  (2) 2019.08.28
[ pwnable.kr ] collision 문제 풀이  (0) 2019.08.27
[ pwnable.kr ] fd 문제풀이  (0) 2019.08.23