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 |
댓글