这是一个内联汇编的题目
查看保护机制
发现什么都没开,然后在发现system啥的都没有,可以考虑shellcode
查看汇编代码
让我们分析一下汇编代码,首先前面四排就是将eax,ebx,ecx,和edx清0,然后把后面的四个参数放到前面的寄存器里面去,然后是把esp的值放到ecx中去,然后进行一个系统调用,调用write函数把前面的值打印出来,然后再调用read函数读取数据,发现我们要读取3c的数据,但是我们看retn的上一排会发现我们读取的地方离esp也才14h,但是我们要读取3c所以会发生一个栈溢出,我们的思路就应该是把shellcode放到栈上就可以执行完成,但目前会出现两个问题
1.我们需要知道放shellcode的地址
2.通常我们用pwntools生成的shellcode是40字节,但是这里只有3c,所以我们需要进行手写shellcode
栈顶是esp,栈底是ebp,所以栈是指esp到ebp,最后一个指令执行之后esp会向下移动14h,所以我们可以先进行溢出然后用write覆盖exit的地址,然后就可以把栈的地址打印下来,这样第一个问题也解决了
Exp