CafeM0ca

[LOB]level10 skeleton 본문

Hacking/LOB(Red Hat)

[LOB]level10 skeleton

M0ca 2018. 1. 3. 19:42
반응형

입장ID:skeleton

입장PW:shellcoder


조건을 보면 argv[1][47]은 \xbf 이어야하고 스택은 사용하지 못한다.

그럼 스택이 아닌 부분을 사용해야 하는데 이 문제는 공유라이브러리를 사용해야한다.

공유 라이브러리는 printf나 strcpy와 같은 함수들이 있는 공간이다.

리눅스에는 LD_PRELOAD라는 환경변수가 존재한다. 이 환경변수는 등록한 공유라이브러리를 우선시 한다.

예를 들면 위 사진의 코드중 printf는 공유라이브러리에 존재한다. 하지만 사용자가 임의의 printf함수를 만들고 공유라이브러리로 컴파일하여 LD_PRELOAD로 올리면 기존의 printf가 아닌 사용자가 만든 printf가 작동한다.(후킹)

그럼, 방금 말한 시나리오대로 간편하게 "쉘을 실행시키는 printf 함수를 만들어버리고  후킹해버리면 되지 않을까?" 라고 생각해봤지만 setuid가 걸린 파일에는 적용이 안된다. 따라서 메모리상에 쉘코드를 올려주고 그 주소로 eip를 조작해야한다.


우선 쉘코드를 공유라이브러리에 올려주자. 아무 파일이나 쉘코드를 공유라이브러리로 컴파일해주자.

주의할 점은 쉘코드가 파일명이어야함으로 심볼릭링크 쉘코드를 사용한다.


환경변수에 올려주고


ebp-3000쯤부터 찾으면 잘 메모리에 로드된걸 확인 할 수 있다.



payload

./golem `python -c 'print "A"*44+"\x64\xf7\xff\xbf"'`


다음ID:golem

다음PW:cup of coffee

반응형

'Hacking > LOB(Red Hat)' 카테고리의 다른 글

[LOB]level12 darkknight  (0) 2018.01.04
[LOB]level11 golem  (0) 2018.01.04
level9 vampire  (0) 2017.09.14
level8 troll  (0) 2017.09.14
level7 orge  (0) 2017.09.14
Comments