level 14
2020. 9. 8. 17:59
이번엔 엄청 복잡한 소스코드가 보이네요.
상단에는 RTL2 라고 써있습니다.
아무래도 RTL chain 공격을 하라는 것 같습니다.
함수와 함수를 연계하라는 것이죠.
위에서도 볼 수 있듯이 execve를 사용하라는 듯 보이네요.
execve - system - exit - "/bin/sh\x00" 순으로 메모리에 넣어주면 될 것 같습니다.
RET - RET - RET - argv
먼저 파일을 복사하겠습니다.
이제 디버깅을 통해 execve, system, exit의 주소를 알아내겠습니다.
execve : 0x400a9d48
exit : 0x400391e0
system : 0x40058ae0
이제 "/bin/sh\x00" 주소를 찾아봅시다.
소스코드를 작성하고,
컴파일 뒤에 실행하면 주소가 나옵니다.
"/bin/sh\x00" : 0x400fbff9
이제 payload를 작성하겠습니다.
"A"*44 + execve + system + exit + "/bin/sh\x00"의 주소
성공!