본문 바로가기
wargame/pwnable.kr

[포너블] pwnable.kr 4 - flag

by 아메리카노와떡볶이 2022. 2. 7.
728x90
pwnable.kr 4 - flag

플래그를 확인하는 건 단순한데 바이너리가 패킹되어있어서 언패킹하는 작업이 필요했다.

바이너리를 언패킹하는건 처음해봐서 검색해서 알아냈음.

 

 

yeob@ubuntu:~/Desktop/pwnble/pwnable.kr$ ./flag2
I will malloc() and strcpy the flag there. take it.

실행하면 이런 문구가 출력된다.

 

메인을 디버깅해보면 무슨뜻인지 바로 알아차릴 수 있다.

malloc을 호출한 뒤에 flag를 복사할것이니 flag를 알아내라는 것이다.

pwndbg> disass 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.

따라서 main+39 에 bp를 걸고 rdx 레지스터값을 확인해보면 된다.

pwndbg> x/s $rdx
0x496628: "UPX...? sounds like a delivery service :)"

 

 

+

바이너리의 리버싱을 막기위해 패킹작업을 할 수 있다는 것을 배움

728x90

'wargame > pwnable.kr' 카테고리의 다른 글

[포너블] pwnable.kr 6 - random  (0) 2022.02.07
[포너블] pwnable.kr 5 - passcode  (0) 2022.02.07
[포너블] pwnable.kr 3 - bof  (0) 2022.02.06
[포너블] pwnable.kr 2 - collision  (0) 2022.02.06
[포너블] pwnable.kr 1 - fd  (0) 2022.02.06

댓글