Hackerschool FTZ Write-up
FTZ Level16 Write-up(FTZ Level16 풀이)
Dork94
2018. 3. 26. 02:32
정말로 끝이 보이기 시작하네요!
16번 입니다!
힌트를 보니 printit의 함수를 포인터 형태로 저장하여 마지막에 call()을 통해 포인터에 저장된 함수를 call하네요!
원래대로라면 Hello there!이 출력되는 함수가 실행되어야 하지만 그 위에 의심스러운 함수가 있네요!
자연스럽게 gdb를 사용하여 main의 코드를 볼까요!
fgets의 인자로사용하는 저 c8의 주소가 buf의 주소이겠네요!
그리고 마지막에 어떠한 주소를 저장하고 call을하는 저 주소가 바로 call의 변수 이겠네요! 역시 차이는 0x28만큼 납니다!
그리고 우리는 여기서 shell 함수의 주소를 찾기 위해 아래와 같이 명령어를 입력하면 친절하게 gdb가 시작주소를 알려줍니다!
(gdb) disass shell
만세!
그리고 늘 그랬듯 아래와 같이 명령어를 작성해주시면~~~
짜란~~ 쉘이 나타났네요 ㅎ
my-pass를 통해 다음 문제로 귀귀씽!