0%

首先看一下程序的保护机制,注意,PIE是开启的,这个checksec检测PIE有时候不准确。不过,我们看到[NX是关闭的,说明堆栈的数据可以被当做指令执行]{.mark}

然后,我们用IDA分析一下,发现是一个很简单程序,并且只有添加和删除功能,其他功能未实现

阅读全文 »

首先,检查一下程序的保护机制,发现PIE和RELRO没有开启,或许我们可以很方便的修改GOT表

然后,我们用IDA分析一下,发现wizard_spell函数存在**[数组下标向负数越界的漏洞]{.mark}**

阅读全文 »

首先,还是查看一下程序的保护机制。看起来不错。

然后用IDA分析

阅读全文 »

本题是一个栈溢出题,难点在于开启了PIE,因此里面的函数地址是随机的。

溢出点在这里

阅读全文 »

首先用IDA查看

发现主函数不能栈溢出,我们看看echo这个函数

阅读全文 »

本题,首先,为了方便调试,我们需要解决alarm clock问题

程序运行几十秒后就会自动退出,所以,为了方便调试,我们需要先修改一下这个二进制

阅读全文 »

Libc2.26以下的解法

使用的是double free的unlink漏洞

unlink是利用glibc malloc 的内存回收机制造成攻击的,核心就在于当两个free的堆块在物理上相邻时,会将他们合并,并将原来free的堆块在原来的链表中解链,加入新的链表中,但这样的合并是有条件的,向前或向后合并。

阅读全文 »