1
如何在啓用NX的情況下在64位系統上利用printf
格式字符串的保護功能?格式化字符串攻擊 - 跳轉到x64上的shell
在此代碼示例中,您可以做些什麼來獲得shell?
void f(char *buf) {
printf(buf);
exit(0);
}
int main() {
char buf[1024];
scanf("%1024s", buf);
f(buf);
return 0;
}
我想是因爲NX的是,缺乏明顯的地方的跳躍(有沒有execve(/bin/bash...
在代碼的任何地方),它必須是一個return-to-libc攻擊,但在哪裏跳?
我相信可以覆蓋GOT條目exit
跳轉到任意位置,例如execve
或system
,但是如何在寄存器中設置正確的參數?搜索二進制ROP鏈並跳到那裏?
或者還有其他方法可以讓shell脫離這個嗎?
https://www.owasp.org/index.php/Format_string_attack –