大多都是堆溢出的情况下,chunk释放前或释放后改变size的值,再申请的时候造成两个堆块有重合的地方,有时候需要改变对应下一个堆的pre_size绕过检查,虽说在libc2.29以后才出现,但有时候2.23的版本还是会因此而报错。所以尽可能的在下一个chunk的pre_size位改成我们的size.
1 | /* consolidate backward */ |
2015 hacklu bookstore
该程序是动态链接的 64 位程序,主要开启了 Canary 与 NX 保护.
程序的最后有个格式化字符串漏洞,只能用一次,用于泄露libc和在fini的地方写上main函数地址
这里输入s是能写上栈的地方,这里输入fini的地址

算出偏移是13

这里只强调构造的fake_chunk
1 | payload=b'%2828c%13$hnkk%31$p' |
申请堆的过程中有堆溢出可以更改下一个 堆的size,改成下面特殊的堆的size,根据题目给大小改。


评论区
欢迎你留下宝贵的意见,昵称输入QQ号会显示QQ头像哦~