这道题一点也不难,不过遇到了一个之前没有注意到的知识
直接溢出buf就可以覆盖返回地址
但是之前做的rop是64位,把参数存放在rdi然后调用system就行
32位的system参数放在栈中,,我以前简单的以为要执行的语句就放在栈顶
于是我把plt表中的地址放进去了,紧接着binsh地址,然后送出去后不对
看网上的wp说,他们用的是这个地址
这个地址是call过去的,者就解释的通了
call之后eip入栈,然后存的才是binsh
所以binsh在esp-4这个位置
这么一试就对了
记住记住