[dreamhack] rao (Return Address Overwrite) writeup

1. 문제

thumbnail
rao (Return Address Overwrite)

Exploit Tech: Return Address Overwrite에서 실습하는 문제입니다.

https://dreamhack.io/wargame/challenges/351

2. 풀이

get_shell함수를 실행시키면 쉘을 실행시킬 수 있다.

main함수에서는 bufscanf함수로 입력을 제한없이 받기 때문에, 리턴주소를 get_shell함수의 주소로 덮으면 될 것이다. 사실상 basic_exploitation_001과 거의 같은 코드이다.

일단 buf에서 리턴 주소까지 얼마나 떨어져있는지 보자.

스택에서 0x30 bytesmain+4에서 볼 수 있고, basic_exploitation_001과 다른 점은 64bit 프로그램이기 때문에 sfp의 크기가 8 bytes라는 것이 있다.

그리고 get_shell 주소를 찾아보자.

0x4006aa에 위치하고 있음을 확인할 수 있다.

그러면 exploit을 작성해보자.

buf부터 dummy (0x30) + sfp (0x8) + get_shell (0x8)를 입력해주면 된다. 64bit기 때문에 p64함수를 사용하는 것 잊지않기…

해결~