NSSCTF [CISCN 2019华南]PWN3的一些细节

本文章只对刷题时看到的一些没说清的地方进行补充
首先放两个链接
第一个是我看到这道题的wp https://lhxhl.github.io/2022/03/03/ciscn_19_s_3/
第二个是我看到srop讲解文章 https://xz.aliyun.com/t/12790?time__1311=GqGxu70%3Deqlr%3DiQouxWw24ROLwbx

第一点
这是第一篇文章的第一次输入时的payload。

这是ida中buf的栈空间。

这里就有一个疑问,为什么他前面的填充只填充了0x10字节,就开始填充返回地址。在第二张图片中可以看到,那是s的位置,不是应该存放rbp的吗?
这里观察一下vuln函数的汇编代码发现,程序的最后只有ret指令,没有leave指令,所以虽然ida里面显示的是s,但那个位置上实际存放的就是返回地址。

第二点
第一篇文章ret2csu的打法

这里实际上是为了在执行

的时候直接跳转回栈的下一个语句执行。所以之前没有给rbp设为1,因为根本不会走到比较rbx和rbp这一步。

第三点
两篇文章算出来的栈偏移都是0x118但是在NSSCTF里面下载的题目动调不是0x118,是其它数值,但是远程环境就是0x118,不知道什么情况,可能和本地的环境有关。

第四点
第二篇文章和第一篇文章都直接使用了pwntools里面

这样的语句进行srop,这里疑惑于为什么直接输入str(sigFrame)就行了。
这里猜想pwntools这里这个工具可以直接把栈上的数据改写成我们需要的部分。(不知道有没有大佬知道是不是这样的)。

posted @ 2024-10-31 16:12  loserw  阅读(52)  评论(0)    收藏  举报