Featured image of post pwnable.kr flag

pwnable.kr flag

해당 문제를 실행하면 오류가 발생한다. 파일이 패키징되어 있다고 추측이 되었고, 이를 확인하기 위해 아래와같은 명령어를 사용하여 확인하여 upx 패킹이 되어있는 것을 확인 할 수 있었다.

(base)  ✘ KIM 🔥   ~/Downloads
 strings ./flag| grep packed
$Info: This file is packed with the UPX executable packer http://upx.sf.net $

upx 언패킹을 하기위해 아래와같이 실행하여 언패킹을 해주었다.

(base)  KIM 🔥   ~/Downloads
 upx -d 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

Unpacked 1 file.

아래 코드를 분석해보면 0x6c2070 에 플래그가 들어있는 것을 확인 할 수 있었고, x/1s *0x6c2070를 입력하여 답을 얻을 수 있었다.

pwndbg> disassemble main
Dump of assembler code for function main:
   0x0000000000401164 <+0>:	push   rbp
   0x0000000000401165 <+1>:	mov    rbp,rsp
   0x0000000000401168 <+4>:	sub    rsp,0x10
   0x000000000040116c <+8>:	mov    edi,0x496658
   0x0000000000401171 <+13>:	call   0x402080 <puts>
   0x0000000000401176 <+18>:	mov    edi,0x64
   0x000000000040117b <+23>:	call   0x4099d0 <malloc>
   0x0000000000401180 <+28>:	mov    QWORD PTR [rbp-0x8],rax
   0x0000000000401184 <+32>:	mov    rdx,QWORD PTR [rip+0x2c0ee5]        # 0x6c2070 <flag>
   0x000000000040118b <+39>:	mov    rax,QWORD PTR [rbp-0x8]
   0x000000000040118f <+43>:	mov    rsi,rdx
   0x0000000000401192 <+46>:	mov    rdi,rax
   0x0000000000401195 <+49>:	call   0x400320
   0x000000000040119a <+54>:	mov    eax,0x0
   0x000000000040119f <+59>:	leave
   0x00000000004011a0 <+60>:	ret
End of assembler dump.
pwndbg> x/1s *0x6c2070
0x496628:	"UPX...? sounds like a delivery service :)"
pwndbg>
comments powered by Disqus