
how2heap
文章平均质量分 82
菜菜的屑语言之路
这个作者很懒,什么都没留下…
展开
-
[how2heap]fastbin_dup_into_stack.c(5)
这玩意虽然上一节讲过了,这里决定再复习一下,顺便用buu平台的一个例题来简单说一下到底怎么打(如果你熟悉我们上一节的知识点,你肯定还是会存疑,比如怎么改栈上的地址?怎么完成栈的攻击?这些,希望这里这个例题可以完成这些疑惑的解答)原创 2025-01-21 16:47:26 · 674 阅读 · 0 评论 -
[how2heap] fastbin_dup.c(4)
接下来我们的bins其实还有还留有一个虚假的a(因为实际上我们已经拿走这个堆块了,但是因为doublefree,所以bins上还有这个)我们把它的fd地址覆盖为栈地址减0x8(因为伪造的chunk要有个 size,size在&stack_var - 0x8的位置上)(请记住,我们申请的chunk fd指针会指向下一个,bk会指向前一个)(这里是针对2.34下的平台环境,其实我本地16也差不多,这里解析用他平台,调试用我本地来展示)可以看到我们这里对于chunk a申请了两次,我重新拿回了我的a。原创 2024-12-04 21:01:43 · 520 阅读 · 0 评论 -
[how2heap] calc_tcache_idx.c(3)
这个东西你要理解成一个链表数组和多个链表组成的,在上文中我们讲到的索引号就可以和这里的链表数组对应起来,每个tcache bin对应7个chunk。这里的代码主要用来了解一下tache机制的分配情况,也不存在攻击,主要是了解为主:(简单做了下代码的翻译,没啥攻击点)这里我们已经提及了tcache机制中一个比较核心的部分:按照分散管理的形式实现了对不同大小的chunk的管理。然后结合我们给出的原理,现在可以轻松地计算我们所需要的索引号啦~可以看一下这篇文章,讲的也挺好的。原创 2024-12-04 12:26:14 · 262 阅读 · 0 评论 -
[how2heap] first_fit.c (2)
至此,就是最最直观的UAF,说白了还是函数指针没有清的原因,这里最直观的就是我p1指向对应内存空间的函数指针没有清除,所以当我实现p2指向我们新的内存空间(其实也就是原来的内存),p1和p2指向了同一个地址。现在,给p2赋值为我们的后门函数(有点像我p1的缓存没清干净,所以我申请的p2也就是我的p1,但是他们又是不一样的两个东西,所以这个时候就会出问题)(3)、我们重新申请一个比这个堆块小的堆块,我们会惊讶地发现,我们申请到了之前我们释放的堆块。可以看到原来的echo还存在的,这里的依旧会执行。原创 2024-12-04 12:24:47 · 922 阅读 · 0 评论 -
[how2heap] 前置说明(1)
快速存储小块,无需合并。临时进入,稍后转移到合适的small bin。临时进入,然后按大小排序插入到large bin。所有释放块的中转站,优先满足后续分配请求。这里本质上要对应free的块大小来的,这个在后面我们会重点说一下,以及针对他们的攻击手段,这里就先简单地放个介绍。原创 2024-12-04 12:22:48 · 772 阅读 · 0 评论