Wargame/LOB_FC
[LOB_FC4] dark_stone -> cruel
bbolmin
2012. 8. 20. 15:15
cruel.c의 소스는 아래와 같다.
Fedoa Core4 환경에서의 간단한 stack overflow이다. FC3에서 달라진 점은
1. 인자 값 참조를 esp로 한다는 점, 2. random library가 적용되었다는 점이다.
ret 슬레딩을 이용하면 쉽게 풀 수 있을것 같다.
스택 구조는 [ 256byte의 buf + 4byte SFP + 4byte RET ]이 된다.
execl함수의 인자 시작부분은 0x08048454로 하면 되겠다. 빨간 네모 부분에 execl의 주소를 넣어주고 그 전까지를
ret 슬레딩으로 채우도록 하자. (계산해보니 9개를 넣으면 되겠다.)
일단 execl가 실행할 파일 이름은 : `perl -e 'print "\x55\x89\xe5\x57\x56\x53\x83\xec\x0c\xe8"'`이다.
아래와 같이 쉘을 띄우는 프로그램으 만들고 심볼릭 링크를 걸어 놓는다.
이제 필요한 값 주소 값을 구하자.
1. cruel의 ret 주소는 : 0x08048451
2 . execl의 주소는 : 0x832d68이다. (랜덤 라이브러리가 제대로 안됬는지;; 일정한 주소값을 갖는다.)
공격 payload : `perl -e 'print "a"x260, "\x51\x84\x04\x8"x9, "\x68\x2d\x83\x00"'`
FC3 때보다 간단하게 쉘을 얻을 수 있다@@@
- -