1. 문제 의도 파악하기
v5는 함수 포인터로, sup 함수의 메모리 주소가 담겨있다.
sup 함수는 s를 출력해 반환하는 함수이다.
그리고 gets 함수로 입력을 받아 버퍼 s에 저장하는데, 버퍼의 크기인 128 byte보다 큰 133만큼 입력을 받아 bof를 발생시킬 수 있을 것으로 보인다.
다만, 133byte 로는 RET까지 가지 못하므로 return address를 변경하는 것은 아닐 듯 싶다.
이때 함수들을 살펴보니 /bin/dash를 실행하는 shell 함수가 존재한다.
그래서 아마 버퍼 크기인 128만큼을 dummy 값으로 채우고, 그 뒤에 있는 v5에 shell의 주소를 넣으면 될 것으로 보인다. 즉, payload는 다음과 같을 것이다.
payload = "A"*128 + shell 함수의 시작주소(0x804849B)
2. payload 작성하기
위와 같은 논리로 payload를 작성해보았다.
성공적으로 쉘을 획득한 모습이다!
'Wargame > HackCTF' 카테고리의 다른 글
[HackCTF] x64 Simple_size_BOF (0) | 2021.03.19 |
---|---|
[HackCTF] Basic_FSB (0) | 2021.03.19 |
[HackCTF] Basic_Bof - Simple_Overflow_ver_2 (0) | 2021.03.13 |
[HackCTF] Basic_Bof - 내 버퍼가 흘러넘친다!!! (0) | 2021.03.11 |
[HackCTF] Basic_Bof #1 (0) | 2021.03.04 |