D^3CTF2022-d3bpf,d3bpf-v2-WP
这次的 D3 出了两道题,有些师傅觉得第二题 d3bpf-v2 是对 d3bpf 出现非预期的修补,其实并不是。两道题都是入门级的 ebpf 利用题(因为我也只是初学者不可能出的难到哪里去),第一题用的 kernel 版本着实有点奇怪,受到许多 CVE 影响,有些师傅只用了公开的 exp 改改偏移就出了。第二题则是因为新版本的 kernel 中加入了 mitigation,旧的利用方式失效,又似乎没有公开的 exp,所以才出的。最后只有 ROIS 的师傅解出,这也很正常,我其实是参考这位师傅发现的 CVE-2022-23222 的利用总结出的题。师傅人也很好,没有对我剽窃他的思路表示不满。总的来说,如果大家能够借助这两道题了解一下 ebpf 的一种利用套路,我觉得我的目的也就达到了。至于非预期之类的,确实给各位师傅带来了一些不好的体验,十分抱歉。
…SUSCTF2022-PWN-WP
这场 SUSCTF 的 pwn 题难度并不算高,我们做到凌晨一点多终于 ak 了 pwn。其中我做了 rain 这题,@xi4oyu 和学弟 @h4kuy4 一起解了 happytree 这题,然后我和 @xi4oyu 一起做了 mujs 和 kqueue。rain 是一个普通的堆题,比较简单,mujs 是一个 js 解释器 pwn,以前没接触过,小语想出了类型混淆的方法,我借此 debug 调偏移最后成功 getshell。kqueue 被非预期打穿了,我们在比赛期间完全没想通能有什么非预期,就参考了 L-team @arttnba3 师傅的这篇文章使用 “setxattr + userfaultfd 堆占位”的方法完成了利用。总的来说,学到了新东西,蛮好。这里总结一下解法。
…
TQLCTF2022-ezvm-WP
上周末参加了奇安信和 Redbud 一起组织的 TQLCTF,pwn 题的质量挺高,都挺有意思的,我在比赛期间尝试做了 unbelievable_write,ezvm 和 trivm-string 三道题,做出两题。其中 unbelievable_write 是一个传统的堆题,free 掉 tcache_prethread_struct 然后 add 即可控制该结构体实现任意地址分配,分配到 free@got 处修改为别的函数即可避免 free 非法堆块导致报错,然后再分配到 target 处覆写即可获得 flag。很简单,就不写 wp 了。然后 trivm-string 这题,三进制平衡虚拟机,确实很有意思,逆向队友帮忙写了一个反汇编器,可惜分析的稍微有点问题。本来的思路是还原栈帧并理清输入流程找到溢出点,但是由于反汇编错误丢失一些 label,看了一会儿还是放弃了。之后准备学习一下反汇编器开发的技巧,再看看能不能写个该虚拟机的反汇编器。
…