2024蓝桥杯
题目复现,也是有一定的收获,基本就是堆块错位的利用,没有uaf的话需要提取布置好size,有的话直接打
线上
第一题
签到题,$0绕过检测,重定向输出flag
1 | from pwn import* |
第二题
只有一次uaf
2.31,add,free,edit,show四个功能函数
add固定只能申请0x50大小堆块
只存在一个漏洞
这里用到一个整理机制,tcachebin中不可以double free,但fastbin中可以,我们可以在fastbin中完成double free,先将tcachebin中的堆块清除,当我们申请一个堆块时,就会触发堆块分配进制,完成tcachebin attack

https://www.yuque.com/xiachi/rx5cxd/fnnowgt0q7z7spst
我们提前布置好size,造成堆块错位,之后我们可以去修改下一个堆块的size,使其合并,free大堆块后,在申请一个小堆块,也就是导致错位的堆块,得到libc地址,再次利用这个错位堆块,去修改bins中的fd位,攻击free_hook

1 | from pwn import* |
线下
第一题
2.27的of by one
add,free,edit,show四个功能函数,add只能申请<0x100的堆块
开局一个伪随机数绕过,直接绕之后house of botcake泄露libc地址,of by one造成堆块重叠后攻击bins中的fd位为free_hook,最后get_shell
1 | from pwn import* |
第二题
2.31堆
add,free,edit,show
存在uaf,add只能申请<0x60的堆块
中间可以申请一次大堆块,正解应该是堆块错位后覆盖size,free大堆块进入unsortdbin,得到libc地址,之后tcachebin attack攻击free_hook
还可以攻击tcachebin的指针区,修改0x290的bins的counts为7,再将指针区作为堆块申请出来,free后进入unsortdbin,show得到libc地址,tcacheBin attack攻击free_hook

1 | from pwn import* |
1 | from pwn import* |