Basic_BOF#2
HackCTF의 Basic_BOF#2번째 문제

해당 프로그램의 동작을 확인하기 위해 실행시켰더니 무언가 입력을 받기를 기다리고 있었다.
임의의 값을 입력했더니..? 하아아아아아앙???.... 흠 마음에 드는 프로그램이군!!
일단 무언가를 입력하면 하아아아아아앙을 출력하는 거 같다 gdb를 이용하여 분석해보자

훔... 별 내용은 없는 거 같다

SUP 함수가 있고 그저 출력해주는 함수이다. 위의 메인코드로 특정값을 입력하면 SUP함수가 실행되어 하아아아아앙이 실행된다.
흠... 이 함수 말고 다른 함수가 숨겨져 있는지 확인해보았다

역시나 의심스러운 shell함수를 발견하였다 이를 확인해보았더니

역시나 시스템 함수를 통해 쉘을 실행시켜주는 함수였다. 그럼 모든 건 해결됐다

ebp-0xc위치에 sup함수의 주소가 들어가고 그 후 ebp-0x8c에서 특정값을 fgets함수로 입력을 받으니
41번째 줄에서 버퍼오버플로우를 일으켜 0xc위치의 값을 sup의 주소가 아닌 shell함수의 주소로 삽입하면 된다

0x8c와 0xc의 거리는 128byte이며 그 후 ffffd07c의 위치에 sup함수의 주소가 있다 그럼
128byte를 dummy로 채운 후 ffffd07 c(0xc) 위치에 shell함수의 주소를 삽입하면 된다 shell함수의 주소는
위 사진에 있듯 0x0804849b이다. 그럼 payload를 작성하러 가보자!!

해당 payload는 이렇게 작성하였다. 로컬에서 먼저 사용해보자!

성공적으로 쉘이 따지는 모습이다 이제 페이로드를 수정 후 remote를 사용하여 쉘을 획득하자


성공적으로 쉘을 획득하고 flag를 획득할 수 있었다!
'WriteUP' 카테고리의 다른 글
| [LOB] cobolt (0) | 2021.05.18 |
|---|---|
| 내 버퍼가 흘러넘친다!! (0) | 2021.05.18 |
| Basic_BOF#1 (2) | 2021.05.17 |
| [LOB] Gremlin 문제 (1) | 2021.05.17 |
| [LOB] Gate 문제 (1) | 2021.05.17 |