pwntools工具生成的shellcode一般是70到100字节左右,采用shellocde = asm(shellcraft.sh())
而当缓冲区溢出的空间太少以至于自动生成的sc不能正常衔接ebp与返回地址时,需要手写shellocde填入缓冲区构造新的栈帧。
书写shellcode参考学习链接:
linux上的shellcode写法(pwntools,手写shell)_pwntools生成shellcode-优快云博客
1.检查文件类型,32位,NX保护未打开。查看函数主要在pwn()部分,利用缓冲区读入的s溢出点,布局构造新的栈帧分布。
#main函数
int pwn()
{
char s[24]; // [esp+8h] [ebp-20h]
puts("\nHey! ^_^");
puts("\nIt's nice to meet you");
puts("\nDo you have anything to tell?");
puts(">");
fflush(stdout);
fgets(s, 50, stdin);
puts("OK bye~");
fflush(stdout);
return 1;
}