我有一個家庭作業分配來利用給定程序中的緩衝區溢出。如何利用緩衝區溢出?
#include <stdio.h>
#include <stdlib.h>
int oopsIGotToTheBadFunction(void)
{
printf("Gotcha!\n");
exit(0);
}
int goodFunctionUserInput(void)
{
char buf[12];
gets(buf);
return(1);
}
int main(void)
{
goodFunctionUserInput();
printf("Overflow failed\n");
return(1);
}
教授要我們利用輸入gets()。我們不會以任何方式修改代碼,只會創建一個惡意輸入來創建緩衝區溢出。我看過網上,但我不知道如何去做這件事。我使用gcc版本5.2.0和Windows 10版本1703.任何提示都會很棒!
更新:
我已經看過了一些教程,並至少找到了地址隱藏的功能我想溢出到,但我現在卡住。我一直試圖運行這些命令:
gcc -g -o vuln -fno-stack-protector -m32 homework5.c
gdb ./vuln
disas main
break *0x00010880
run $(python -c "print('A'*256)")
x/200xb $esp
用最後一個命令,它出現說「值不能轉換爲整數」。我嘗試將esp替換爲rsp,因爲我在64位上,但是得出了相同的結果。有沒有解決這個或另一種方法來找到buf的地址?
提示:https://en.wikipedia.org/wiki/Stack_buffer_overflow – Namphibian
爲什麼老師總是給無用的功課?這個問題要求未定義的行爲。如果你想要一個提示,至少需要給我們:gcc的版本,你編譯和運行的操作系統是什麼(包括版本)。 – Stargateur
查看[security.stackexchange.com]上的其他問題(https://security.stackexchange.com/questions/tagged/buffer-overflow) –