BOF 원정대의 succubus를 잡아보자!
* 소스코드
(succubus.c)
succubus의 main함수이다. 특징을 보면 ret주소에 DO라는 함수 주소가 적혀야한다는 점이다.
위에 보면 도 개 걸 윷 모 라는 함수들이 정의되어있다.
(도개걸윷모)
즉 도->개->걸->윷->모 를 차례대로 호출하고 마지막 모의 인자로 "/bin/sh"의 문자열을 전달 하면 쉘을 획득 할 수 있다.
각각의 함수들의 시작 주소를 찾았다.
DO : 0x80487ec
GYE : 0x80487bc
GUL : 0x804878c
YUT : 0x804875c
MO : 0x8048724
ret주소에 차례대로 넣어주고 마지막 MO의 인자로는 "/bin/sh"의 주소를 넣어주어야하는데 라이브러리 함수를 못쓰니 직접 넣어줄 것이다. 지금은 이 주소를 모르니 C로 채워넣고 뒤에 /bin/sh 주소를 넣어 메모리를 확인해보겠다.
(gdb 실행)
(메모리 상황)
0xbffffa78 주소에 /bin/sh 문자열이 들어가 있는 것을 확인 할 수 있다.
이제 C로 채웠던 부분에 이 문자열 주소를 넣고 공격을 해보자!
(공격 실패)
여기서 스택영역의 주소라 0x10바이트 간격으로 오차가 있다.
core 덤프파일을 확인하여 정확한 주소를 찾아보자.
(core 덤프파일)
파일을 보니 0xbffffa98 부터 /bin/sh 문자열이 들어가있는 것을 확인 할 수 있다.
문자열 주소에 0xbffffa98 주소를 입력하여 다시 공격!
(공격 성공)
쉘을 획득하였다. :)
'WarGame > 500 Project' 카테고리의 다른 글
(35/500) Lord of the BOF - xavius (0) | 2017.06.25 |
---|---|
(34/500) Lord of the BOF - nightmare (0) | 2017.06.23 |
(32/500) Lord of the BOF - zombie_assassin (0) | 2017.06.23 |
(31/500) Lord of the BOF - assassin (0) | 2017.06.23 |
(30/500) Lord of the BOF - giant (0) | 2017.06.21 |