附件在我的 github 仓库里可以找到: ctf-writeup-collection
silent
这道题其实拿栈上残留的 dl_main
地址改末四位偏移可以找到一个 syscall + 栈迁移的 gadget,只需要爆破 1/16
的概率就行了:
babyheap
2.38 里面我测试下来 fflush(house of apple2)
其实还是可以打的,但是 malloc_assert
被改了没法调用到 fflush(stderr)
,不过这题的限制实在太少了,一个 offbynull 构造出来 overlap,改到 tcache 结构体上面后就借助 IO_file
的 leak 方式实现了真 - 任意地址读写,那无论版本怎么更新打栈总归不会错的:
6502
其实是超级水题,比赛时被唬住了花了一大堆时间,其实就 lda_imm, sta_abs
来修改任意地址,adc_abs
来计算偏移量:
atuo_coffee_sale_machine
我们战队也好想要咖啡机,UAF + IO leak
打 tcache 搞定:
总结:
其实已经很久没有见到这么友善的 pwn 题了,甚至一道 kernel 也没有。
~从未如此美妙的比赛,我必须好好地珍惜这段时光~~
反转了,被 6502 的低版本库折磨,又被 2.38 的高版本给唬住,打得依托④。。。