[LOB] 페도라 원정대 3 (dark_eyes -> hell_fire)
한동안 리모트 환경인줄 모르고 이해가 안갔던 문제,,
코드는 간단하다 그냥 ebp 를 저장했다가 되돌림으로써 fake_ebp 를 막아놓은 것 말고는 일반적인 버퍼 오버 플로우이다.
다만 리모트 환경이라는 부분을 코드를 찾는데 고생했다.
일반적인 페도라 리모트 오버플로우에서 쉘을 획득할때는 execve 보다 system 함수가 더 유용하다. 하지만 system 함수 역시 인자값을 구성해 줘야하는 어려움이 있는데 시스템 함수에는 내부 루틴중에 do_system 함수를 사용 하게 된다.
이 do_system 은 내부적으로 execve("/bin/sh","명령어 "); 와 같은 효과를 가지게 되므로 do_system 만 호출하여도 쉘이 올라가게 된다.
1. 번외 : [/bin/sh] 주소값 찾기
system 함수 내에는 do_system 이란 함수가 존재하고 이는 /bin/sh 를 인자값으로 쓴다.
때문에 system 함수를 기점으로 문자열을 검색해보면 [/bin/sh] 의 주소값을 찾을 수 있다.
[evil_wizard@Fedora_1stFloor ~]$ cat findsh.c
#include<stdio.h>
int main(int argc, char *argv[]){
int addr=0x007507c5; //system 함수의 주소
while(1){
if(memcmp(addr++,"/bin/sh",8)==0){
printf("[%p]\n",addr);
break;
}
}
return 0;
'War_Game > system' 카테고리의 다른 글
LOB Fedora 원정대 ( evil_wizard -> dark_stone ) (0) | 2013.04.14 |
---|---|
LOB Fedora BOF GOT overwrite (hell_fire -> evil_wizard) (0) | 2013.04.07 |
LOB level20 (xavius -> death_knight) Remote BOF (2) | 2012.06.21 |
LOB 페도라 원정대 iron_golem -> dark_eyes (LOB FC level 2) (0) | 2012.05.13 |
LOB 페도라 원정대 (gate -> iron_golem) (0) | 2012.05.11 |