ssh://ftz.hackerschool.org id : level11 pw : what!@#$? |
Summary : buffer overflow on redhat 6.2
서버에 접속하여 문제 파일을 확인한다.
[level11@ftz level11]$ ls -l #include <stdio.h> setreuid( 3092, 3092 );
|
attackme 라는 setuid가 걸린 level12 user의 프로그램과 hint가 있는데 , hint에는 attackme 프로그램의 source가 나와있다.
source를 보게되면 strcpy함수로 인해 발생하는 overflow 취약점과 format string bug 취약점이 있음을 볼 수 있다.
overflow 취약점을 이용한 풀이를 할것이다.
stack에 실행 권한이 있으므로 shellcode를 이용한 공격을 할 것 이다.
지역변수는 str배열 하나만 선언되었기 때문에 , 지역변수의 크기만 알면 쉽게 공격할 수 있다.
0x08048473 <main+3>:sub $0x108,%esp |
지역변수는 총 264바이트가 선언되었으므로 sfp포함 268바이트를 덮어주고 return address에 nop + shellcode 의 주소를 넣어준다. shellcode는 지역변수공간에 넣어준다.
이제 shellcode가 위치한 주소를 찾아주어야 하는데, 디버깅을 하면 매우 쉽게 찾을 수 있지만 , 이번에는 python script를 작성하여 return address를 브루트포싱해 공격해본다.
[level11@ftz .pwn3r]$ vi exploit.py import os TARGET = "/home/level11/attackme" print "[!] Exploit started!" for i in range(0xff , 0x00 , -1): if pid == 0: Level12 Password is "it is like this". |
level12 user의 쉘을 획득하고 password를 얻었다.
'Wargame > FTZ' 카테고리의 다른 글
Hackerschool FTZ level13 (0) | 2011.07.28 |
---|---|
Hackerschool FTZ level12 (0) | 2011.07.28 |
Hackerschool FTZ level10 (2) | 2011.07.17 |
Hackerschool FTZ level9 (0) | 2011.07.17 |
Hackerschool FTZ level8 (0) | 2011.07.17 |