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 |