题目来源:https://github.com/ctf-wiki/ctf-challenges/tree/master/pwn/stackoverflow/ret2libc/ret2libc1

查看保护,只是开了nx(不可执行内存保护)用于防御缓冲区溢出等代码注入攻击
同时还知道是32位架构。
拖入ida
代码很简单,明显的栈溢出漏洞,gets可以无限输入,但是s的空间有限,ida中显示的是100,但是由于栈对齐等很多原因导致这个数字有时不正确。最好就是用gdb动态调试一番
看他的
溢出点
可以cyclic -l daab 也可以
结果都一样 112 ida这次不准。
偏移有了 从
看得见system函数,ok直接用就行了,用plt表上的 ,因为它会直接跳转并调用它。至于为啥不能用got表的 我觉得这是第一次执行,表里啥也没有。反正都知道plt它是个跳板直接就到那个函数了。
binsh在ida用shift+F12即可找到

脚本很简单,sys覆盖到返回地址后它本身有个返回地址的操作,总之不重要,随便啥覆盖就行,知道32位一个返回地址占4字节就OK ,binsh作为参数传入sys即可。
另外,ROPgadget也可以查找