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

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

可以看到当Serialization()函数返回值为1时获得shell
双击Serialization(),进入Serialization函数

可以看到只有满足这一串条件,函数才会返回True
| 十进制 | 字符 |
|---|---|
| 100 | d |
| 101 | e |
| 97 | a |
| 45 | - |
| 98 | b |
| 102 | f |
所以我们的开头固定字符为dead-,结尾固定字符为-beef,中间还要填充121-10=111byte的其他任何数据
返回虚拟机
nano exp.py 开始写攻击脚本

保存退出
python3 exp.py
cat flag

此题完