6
-
Stack6 풀이System hacking training/Protostar 2018. 2. 16. 21:20
[문제] 문제를 보면 쉘코드를 올려서 문제를 풀 수 없도록 되어있네염 0xbf로 시작하는 모든 주소는 예외처리에 걸리기 때문이지요~ㅎ 하지만 취약점은 존재합니다. 역시나 gets()를 사용하였기 때문에 bof 취약점이 존재하는데요. 쉘코드를 쓸 수 없지만 쉘을 띄우기 위해서는 RTL이라는 기법을 쓸 필요가 있겠네요~ 보면 메인은 별게 없고, getpath()를 보면 총 스택공간을 0x68 (dec : 104) 만큼 할당하고 ebp-76이 buf의 시작주소임을 알 수 있습니당 그렇다면 SFP까지 총 80 byte 더미값을 채우고 system()를 return address로 덮고, 인자값을 주기 위해 더미 4 byte 채운뒤 /bin/sh이 위치한 주소를 적어주면 system("/bin/sh")가 실행되어..