编写php词法分析器
由于工作关系平时审计代码比较多所以一直想写个辅助工具来减轻工作量。(当然不是那种写几个正则去全文检索的工具)思路和传统漏洞挖掘一样也是基于污点入口,所以就涉及到词法分析语法分析等等,静态审计实现起来还是比较简单。原先理想的状态是自己做一个php的解释器类似沙盒一样可以把程序跑起来,这里简单介绍下第一部分词法分析。
php词法分析是用re2c生成的,可以去看Zend/zend_language_scanner.l。关于re2c的相关文档也有很多所以这里就不再详细介绍,词法分析比较简单需要注意的地方是一点要设置YYLIMIT的值,要不然在处理双引号的时候可能会取不到值,php处理双引号占了整个词法分析的很大一部分。
我这里主要实现了和php系统函数token_get_all一样的功能,运行效果如下:
写的匆忙没写详细等有时间详细的记录一编,先回去lol了。