初逢CodeQL
本文最后更新于:4 分钟前
参考文章:
codeql官方文档说明:
按照官方文档的要求,下载成功codeql-bundle后,将codeql路径配置到环境变量中
codeql的简单工作原理是通过记录程序在编译过程中生成的语法树,并形成关联,构建成一个数据库,数据库中包含项目代码的所有基本信息(有什么类、类继承了什么、实现了什么、什么修饰符,类里有什么方法、什么属性,方法里调用了什么方法、属性,方法的返回值是什么等等。。。)方便我们通过代码审计寻找bug、漏洞
那么一切准备就绪后,第一件事要做的自然就是生成一个数据库
codeql支持相当多的语言(悲惨的php被排除在外了),但是我的目的主要还是用来审计java代码,以及寻找一些反序列化过程中的gadget利用链,所以初步学习还是拿java开刀了
话不多说,开始
创建数据库
构建一个数据库只需要以下一个命令:
1 |
|
--source-root
参数若不指定则默认当前目录下为项目代码根目,有时候--command
也可以不指定会自动用maven帮我们编译打包
vscode导入数据库并查询
codeql高效使用需结合vscode的codeql插件,安装完成后侧边栏会出现一个QL的图标
安装好插件之后,我们先把目光转移到下面这个目录:
codeql根目录/qlpacks/codeql
,在这个目录下有非常多的内置ql查询语句:
我们首先就需要使用vscode打开一个书写ql语句的文件,可以是自己编写的,也可以是内置的,比方说我们就使用vscode打开这个内置ql语句目录
使用vscode打开codeql根目录/qlpacks/codeql
,然后在database处选择通过上一步生成的数据库: