avatar

Ott3r

Ott3r Blog

  • HOME
  • CATEGORIES
  • TAGS
  • ARCHIVES
  • ABOUT
Home [pwnable.kr] flag
Post

[pwnable.kr] flag

Posted Dec 16, 2023
By ott3r07 6 min read

pwnable.kr 문제 풀이 목록 바로가기


문제 설명

문제 설명

Papa brought me a packed present! let’s open it.

아빠가 포장된(packed) 선물을 사져왔어요! 열어볼게요.

처음 문제를 확인했을 땐 이게 뭔가 했습니다.

선물을 포장해왔다 해서 무슨 힌트를 준것일까 생각하게 되었습니다.

필요한 파일을 다운로드 받고 프로그램의 시작 흐름을 확인해 봅니다.

1
2
3
4
❯ wget http://pwnable.kr/bin/flag
❯ chmod +x ./flag
❯ ./flag
I will malloc() and strcpy the flag there. take it.

프로그램을 실행 시켰을 때 malloc()과 strcpy에 flag가 있다고 가져가라고 합니다.


문제 풀이

Decompile

ghidra로 프로그램을 디컴파일 후 분석을 시도하려고 한다. main함수가 보이지 않아 주어진 문자열 (I will malloc()...)을 기준으로 main을 찾기 위해 시도 했습니다.

문자열이 찾아지지 않음

하지만 주어진 문자열로 검색을 했을 때 문자열을 찾을 수 없었습니다.

문자열이 암호화 되어 저장되어 있거나 패킹되어 있을 확률이 높습니다.


다른 쓸만한 문자열이 있을지 필터를 지우고 문자열들을 확인해 보았을 때, 다음과 같은 힌트를 발견할 수 있습니다.

upx packed

위의 사진의 힌트를 통해서 해당 프로그램은 upx프로그램을 통해서 packing되어 있다는 것을 알 수 있습니다.

packing이란 실행압축을 의미하게 됩니다.

패킹을 수행 했을 때, 프로그램은 메모리에서 압축을 해제 시킨 후 실행을 시키게 되고, 이런 과정을 거쳐 프로그램의 크기를 줄일 수 있으며 어플리케이션 분석의 시간을 늦출 수 있는 효과가 있습니다.

unpack & decompile

unpack

upx로 패킹되어 있다는 것을 확인 했으므로 upx를 이용해 언패킹을 수행합니다. upx가 설치 되어 있지 않다면 sudo apt-get install upx를 통해 설치할 수 있습니다.

설치 이후 upx를 실행해 보면 다음과 같은 화면을 확인 가능합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
❯ upx
                       Ultimate Packer for eXecutables
                          Copyright (C) 1996 - 2020
UPX 3.96        Markus Oberhumer, Laszlo Molnar & John Reiser   Jan 23rd 2020

Usage: upx [-123456789dlthVL] [-qvfk] [-o file] file..

Commands:
  -1     compress faster                   -9    compress better
  -d     decompress                        -l    list compressed file
  -t     test compressed file              -V    display version number
  -h     give more help                    -L    display software license
Options:
  -q     be quiet                          -v    be verbose
  -oFILE write output to 'FILE'
  -f     force compression of suspicious files
  -k     keep backup files
file..   executables to (de)compress

Type 'upx --help' for more detailed help.

UPX comes with ABSOLUTELY NO WARRANTY; for details visit https://upx.github.io
  • d 옵션을 부여해서 패킹된 파일을 decompress할 수 있습니다.
  • o 옵션을 사용하면 결과 파일을 다른 이름으로 저장할 수 있습니다.
1
2
3
4
5
6
7
8
9
10
❯ upx -d -o flag_unpack ./flag
                       Ultimate Packer for eXecutables
                          Copyright (C) 1996 - 2020
UPX 3.96        Markus Oberhumer, Laszlo Molnar & John Reiser   Jan 23rd 2020

        File size         Ratio      Format      Name
   --------------------   ------   -----------   -----------
    883745 <-    335288   37.94%   linux/amd64   flag_unpack

Unpacked 1 file.

언패킹된 파일의 용량을 확인 했을 때, 기존의 패킹된 파일보다 용량이 늘어난 것을 확인할 수 있습니다.

용량은 변화 하였지만 실행 결과는 동일한 모습도 확인할 수 있습니다.

1
2
3
4
5
6
❯ ls -l
total 1192
-rwxrwxr-x 1 ott3r ott3r 335288  5월 16  2019 flag
-rwxrwxr-x 1 ott3r ott3r 883745  5월 16  2019 flag_unpack
❯ ./flag_unpack
I will malloc() and strcpy the flag there. take it.

decompile

언팩된 파일을 다시 기드라에 올려서 분석하면 main함수의 심볼을 찾을 수 있습니다.

upx packed

언팩된 파일은 처음에 main을 찾기위해 검색을 시도 했던 문자열(I will malloc()...)을 확인할 수 있습니다.

또한 코드를 살펴보면 strcpy(__dest, flag);를 확인할 수 있습니다.


결과

flag변수 명을 더블 클릭 하게 되면 문자열이 들어 있는 주소를 다음과 같이 확인할 수 있습니다.

flag_addr

여기서 다시 한번 해당 주소를 더블 클릭하게 되면 저장 되어 있는 문자열을 확인할 수 있습니다.

flag

upx로 패킹된 바이너리를 다시 언패킹 하여 분석할 수 있는 문제였습니다.

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

wargames, pwnable.kr
wargames pwnable.kr upx
This post is licensed under CC BY 4.0 by the author.
Share
Recent Post
  • [pwnable.kr] flag
  • [pwnable.kr] bof
  • [pwnable.kr] collision

Trending Tags

pwnable.kr wargames bof file_descriptor payload read() upx wargame

Contents

Further Reading

Dec 12, 2023

[pwnable.kr] fd

pwnable.kr 문제 풀이 목록 바로가기 pwnable.kr을 정리 하는 이유 대학원에 입학하기 전 게으름을 방지하고자 기초 지식을 다시 잡기 위해 진행하려고 합니다. 하루의 한문제를 클리어 하는 것을 목표로 가지고 있으며, 당일 풀지 못한 문제는 시간이 걸려도 정답을 절대 보지 않고 클리어 하는 것을 목표로 두고 있습니다. 문제 설명...

Dec 13, 2023

[pwnable.kr] collision

pwnable.kr 문제 풀이 목록 바로가기 문제 설명 Daddy told me about cool MD5 hash collision today. I wanna do something like that too! 아빠가 오늘 MD5 해시 충돌에 대한 멋진 얘기를 해주셨어요. 나도 그런거 하고싶어요! 문제를 풀기 전에...

Dec 14, 2023

[pwnable.kr] bof

pwnable.kr 문제 풀이 목록 바로가기 문제 설명 Nana told me that buffer overflow is one of the most common software vulnerability. Is that true? Nana는 버퍼 오버플로우가 소프트웨어에서 가장 일반적인 취약점이라고 말했습니다. 정말인가...

[pwnable.kr] bof

-

© 2024 ott3r07. All rights reserved.

Trending Tags

pwnable.kr wargames bof file_descriptor payload read() upx wargame

A new version of content is available.