ret2libc2
当前的ret2libc2:有system,无”\bin\sh“
1.程序分析
找个题和ret2libc1差不多,区别在于程序里面没有现成的"/bin/sh"字符串。
首先checksec一下:

file一下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ss8LRj6L-1628251397723)(https://i.loli.net/2021/07/07/47eCUW3uEORSap2.png)]
用ida分析:

发现有个gets()函数,可以借助它来进行栈溢出
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EH2KT7vj-1628251397725)(https://i.loli.net/2021/07/07/Dftlya8TFZCEAMq.png)]
发现没有"/bin/sh"字符串
既然存在gets()函数,可以手动输入一个“/bin/sh”
那么就需要一个缓冲区
去.bss段内寻找,发现一个buf2,在0x0804A080处:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aiMgv1FP-1628251397728)(https://i.loli.net/2021/07/07/4ZTY9dF3aWP5MeB.png)]
下面计算一下需要淹没的长度,gdb调试:

因此需要淹没的长度为: 0 x f f f f d 2 d 8 − 0 x