前期准备
checksec、file等流程
就开了个nx,也就是不准植入shellcode而已
看看ida
有sh字符串,点进去就能得到地址0x0804a024
主函数中能很明显发现有system函数
点进去看ida下端能直接得到函数地址 0x8048320
主函数没啥东西,主要就是调用了这个函数,到这基本上就有思路了
漏洞及利用思路
此函数最后一句read函数存在栈溢出,很明显可读的数量比buf多很多,所以直接跳转到system,注意调用的堆栈平衡即可(也就是payload中调用add+ret+参数,这三个相连的固定形式)当然如果直接用call system的地址就不用+ret了,因为call本来就带有ret,这里因为是通过改变ip指向继续调用新函数,要加上ret符合规则
到这就能得到完整payload了,注意sendlineafter就行,当然也可以不用after(不要after就自己改改就成,我这里选择exp与程序交互对齐,避免养成无脑sendline的习惯)
payload: