본문 바로가기

wargame/hackCTF

[hackCTF]pwnable Baisc_BOF #2

Baisc_BOF #2


2번 문제


이전과 같이 다운 받고 실행 권한을 준다.


아이다로 확인해보자. Function window를 보면 이전과는 달리 두 개의 함수가 더 추가된 것을 확인할 수 있다.

우선 main함수를 살펴보자.
v5는 함수포인터이다. 자세한 건 구글링ㄱㄱ
중요한 건 함수를 가리키는 포인터이기 때문에 6번째 줄때문에 sup을 가리킨다는 것이다.
이걸로는 문제를 해결할 수 없다. 다른 함수를 살펴보자.

sup함수는 다음과 같다.

별 건 없고 s의 값을 화면에 출력한다.

shell함수를 살펴보자.

이걸로 쉘을 딸 수 있다!

정리해보자.
우리는 shell()을 실행시키면 문제를 해결할 수 있다.
main함수에서 v5를 실행하는데 v5가 sup을 가리키는 대신 shell을 가리키면 된다.
이는 fgets가 stdin을 통해 s에 값을 저장할 때 v5가 있는 위치까지 덮으면 될 것이다.
payload는 '아무 값이나 0x80바이트 + shell의 주소 값' 이 될 것이다.

shell의 주소 값을 알아보자.

아이다에서 text view를 클릭하면 다음과 같은 형식으로 볼 수 있는데 Function window에서 shell 함수를 더블클릭하면 shell함수가 시작하는 위치를 알 수 있다.

exploit.py를 작성했다.


실행 권한을 주고 실행해보았다.


이제 원격으로 실행하자.


수정한 exploit.py로 실행해보자.

문제해결

'wargame > hackCTF' 카테고리의 다른 글

[hackCTF]pwnable x64 Buffer Overflow  (0) 2019.11.27
[hackCTF]pwnable 내 버퍼가 흘러넘친다!!  (0) 2019.11.27
[hackCTF]pwnable Basic_BOF #1  (0) 2019.11.27