ii4gsp

FTZ - Level9 본문

시스템 해킹/FTZ

FTZ - Level9

ii4gsp 2020. 1. 6. 22:44

힌트를 보니 /usr/bin/bof의 소스코드를 보여주고 level10의 권한을 얻으라고 한다.

fgets함수에서 버퍼 오버플로우 취약점이 발생한다.

buf가 10칸 할당받았는데 fgets에서 40만큼 입력을받기때문에 buf공간이 넘쳐 buf2영역까지 인자를 전달하여

buf2의 첫 두글자가 go가 되게하면 쉘을 획득 할수있을것이다.

 

 

 

 

hint의 소스코드를 /tmp 디렉토리에 bof.c라고 저장하였다.

저장된 bof.c를 vi 에디터로 열어  한글을 제거하였다.

 

 

 

 

 gcc로 컴파일해주고

 

 

 

 

gdb로 disas main 명령어를 실행해보니

<main+43> 0xffffffd8은 1101 1000에서 1의 보수를 해주면 0010 0111(39)이 되는데 2의 보수로인해 +1이 됨으로써 40이된다.

[ebp-40] 만큼 문자열을 입력받는다.

아래 <main+65>부분 0xffffffe8도 1110 1000에서 1의 보수를 구하면 0001 0111(23)이 되는데 2의 보수로인해 +1이 됨으로써 24이다.

[ebp-24]에서 문자열을 비교한다.

즉, [ebp-40]는 buf의 위치, [ebp-24]는 buf2의 위치가 된다.

[ebp-40] - [ebp-24] = 16

16만큼의 문자열을 넣고 go를 넣어주면 buf2의 첫 두글자가 go가 될것이다.

 

 

 

 

 

 

payload

(python -c 'print "\x90" * 16 + "go"';cat) | /usr/bin/bof

'시스템 해킹 > FTZ' 카테고리의 다른 글

FTZ - Level15  (0) 2020.01.10
FTZ - Level14  (0) 2020.01.09
FTZ - Level13  (0) 2020.01.08
FTZ - Level12  (0) 2020.01.08
FTZ - Level11  (0) 2020.01.07
Comments