표튜터와 함께하는 Pwnable/HackCTF Write-up

[HackCTF] x64 Simple_size_BOF Write-up

IMyoungho 2019. 4. 18. 21:48


이번 문제는 x64 Simple_size_BOF이다~~



문제를 실행시켜보았다!

버퍼의 주소로 보이는 것이 출력되고 있고

사용자가 값을 입력할 수 있게되어있다~




소스를 보도록 하자

버퍼의 크기는 0x6D30 => 27952이다. 프로그램을 실행해보면 알겠지만

버퍼의 주소는 항상 바뀐다. 하지만 버퍼의 주소를 출력해주기 때문에

우리는 버퍼의 주소를 알 수 있다. 그렇다면 일단 ret위치를 확인해보자



rsp에서 27960떨어진 부분이 바로 ret값이다. 그러므로 우리는

다음과 같은 Payload를 구성할 수 있다.



Payload는 다음과 같다~

우선 출력되는 버퍼의 주소값을 인자로 받아온다. 받아온 이 버퍼의 주소는

ret에 덮어쓸 것이다. 그 다음 64bit용 Shellcode(31)을 넣고 나머지 27929만큼을

dummy(27929)값으로 채운다. 그렇게 되면 ret의 위치가 되기 때문에 아까 찾아놓은

버퍼의 주소값을 넣어서 Payload를 완성하면 된다.




깔꼼하게 FLAG를 딸 수 있었다.

반응형