CTF
2017 hitcon training zoo
Hanjeouk
2018. 3. 14. 14:55
C++ 문제를 한번도 풀어본 적이 없어서 경험삼아 이 문제를 풀어보았다. training이라서 C++ 코드를 줬다.
NX가 꺼져있어서 쉘코드를 사용할 수 있었다.
취약점은 받은 값을 strcpy를 이용해서 복사하기 때문에 overflow가 발생한다. 그래서 다른 청크의 가상함수 포인터를 가리키는 주소를 쉘코드가 있는 주소로 바꿔서 쉘을 딸 수 있었다. 쉘코드는 전역변수에다가 넣어서 따로 주소를 구할 필요도 없었다.
가상함수 포인터가 이중이라서 두번 가리켜줘야 한다.