本人也是在自学过程,主要目的也是记录学习过程,有些地方做的不太好,都是按照自己理解进行讲解的(不专业),欢迎大家指出问题
此处将文件命名为pwn
checksec pwn 查看一下保护机制

可以看到这是一个32-bit的文件,NX保护开启
将文件拖入ida,按F5将汇编代码转换成c语言代码,得到

可以看到printf(&s)格式化字符串漏洞,存在内置system函数,所以我们可以将printf@got里存储的内容改写成system函数的地址,然后发送'/bin/sh',构成system("/bin/sh"),获得shell
返回虚拟机
./pwn
aaaa.%p.%p.%p.%p.%p.%p.%p.%p.%p.%p

可以看到0x61616161在aaaa后面的第7个参数
nano exp.py 开始写攻击脚本

保存退出
python3 exp.py
cat flag

此题完