以库的形式使用 LibFuzzer——使用 LibFuzzer 对 lava-M 的测试
半个多月没有更新博客了,主要还是因为逐渐不再以刷题来学习 pwn 了,少了很多可写的东西,再加上上个月特别的忙,先是军训,训完之后就连着上课,早八到晚八,弄的我心力憔悴,确实没学到什么东西,所以确实没什么可写的。
…
RCTF2021-musl-WP && 5space 2021 *CTF 2022 强网杯 2022 Musl 赛题 exp
写在一年后
在现在向前看,发现自己也算半个 musl 大师了,自从 RCTF2021 的 musl 题之后的每场比赛只要出现 musl 我都能解出,也从最开始的写一天到现在的两三个小时打通,有时候还能拿个N血。这是什么原因呢?很简单,每道题都是换汤不换药,都是同样的攻击点,也就是 dequeue 操作,堆风水上稍稍有些区别,但也差不多,然后再开个 seccomp 恶心选手。很没有意思啦。还是希望 CTF 比赛不要盲目追求难度(特指的是各种严苛的而又重复的堆利用)能少出现一些重复的套路题,多一些有意思的题目。
…COOL 语义分析器实现
COOL 的语义分析主要对作用域和类型做了检测,这是两个必要的检测。未定义或重复定义的变量会对代码生成造成影响;类型不匹配也会造成各种未定义行为。
作用域
语义分析中需要对每个标识符(变量、函数)做检测,主要需要检查是否有未定义的标识符和重复定义的标识符。以 COOL 为例,通过维护一个符号表即可实现检测。这个检测过程可能需要对 AST 进行多次遍历,因为在 COOL 中,全局变量可以在声明前引用,所以至少需要先遍历一次并记录所有的全局变量,这样在第二次遍历时就可以正确判断变量是否有定义。
…