CTF

2017 hitcon training zoo

Hanjeouk 2018. 3. 14. 14:55

C++ 문제를 한번도 풀어본 적이 없어서 경험삼아 이 문제를 풀어보았다. training이라서 C++ 코드를 줬다.

NX가 꺼져있어서 쉘코드를 사용할 수 있었다.

취약점은 받은 값을 strcpy를 이용해서 복사하기 때문에 overflow가 발생한다. 그래서 다른 청크의 가상함수 포인터를 가리키는 주소를 쉘코드가 있는 주소로 바꿔서 쉘을 딸 수 있었다. 쉘코드는 전역변수에다가 넣어서 따로 주소를 구할 필요도 없었다.

가상함수 포인터가 이중이라서 두번 가리켜줘야 한다.