CodeQL系列之安装CodeQL

CodeQL系列之安装CodeQL

0x01 下载

将CodeQL CLI的可执行文件添加到环境变量

https://github.com/github/codeql-cli-binaries/releases/latest/download/codeql.zip

image-20211117214922819

image-20211117215003120

CodeQL 标准库

https://codeload.github.com/github/codeql/zip/refs/heads/main

image-20211117215020543

Visual Studio Code CodeQL插件

Ctrl+Shift+X => 输入CodeQL => install

在CodeQL扩展中配置CodeQL CLI的路径,例如C:\Users\xxxxx\Desktop\codeql\codeql\codeql\codeql.exe

image-20211117214851608

0x02 编译QL数据库

常规编译

在开源项目的根目录下运行如下命令建库,前提是该项目能够编译成功

codeql database create catMaster -l java

如果上面编译失败,就用下面的命令编译

Gadle项目

codeql database create XXXXXXXXXX--language=java --command="gradle.bat" --overwrite

codeql database create XXXXXXXXXXXX --source-root=D:\Study\Java\XXXXXXXXXX --language=java --command="gradle clean build -x test --no-daemon -Dfile.encoding=UTF-8"

Maven项目

codeql database create JEECMS -l java -c "mvn lean install --file pom.xml"

delombok

如果发现数据库少文件,大概率原因是少的文件都用了lombok,使用下面的命令删除该注解

wget https://projectlombok.org/downloads/lombok.jar -O "lombok.jar"
java -jar D:\tools\CodeQL\lombok.jar delombok XXXXXXXXXX -d XXXXXXXXXXX-Delombok --encoding=UTF-8

然后重新创建数据库

codeql database create XXXXXXXXXX --language=java --command="gradle clean build -x test --no-daemon -Dfile.encoding=UTF-8" --overwrite

生成了catMaster目录

image-20211117215321577

0x03 使用

创建你的第一个QL包

你需要创建一个文件夹,用来存放后续你编写的CodeQL脚本,CodeQL官方称这个文件夹为QL Pack。

例如名为Cat-codeql的文件夹,并在里面创建1个QL Pack的配置文件,名称固定为qlpack.yml;再创建一个ql后缀的文件,名称随意。

image-20211117215430967

将如下信息填入qlpack.yml文件

name: example-query
version: 0.0.0
libraryPathDependencies: codeql-java

第一行表示这个QL包的名称为example-query,必选,如果你在VSCode中同时打开多个QL包时,要保证这个name的值唯一不重复;

第二行表示这个QL包的版本号,必选;

第三行表示这个QL包的依赖,必选,codeql-java表示需要Java语言的QL标准库依赖。

image-20211117215537605

VSCode工作区增加CodeQL标准库

VSCode - 文件 - 将文件夹加入工作区 - 选择存放CodeQL标准库的文件夹

image-20211117215647554

image-20211117215718097

在VSCode的CodeQL插件中添加之前用CodeQL创建的CatMaster的数据库。

image-20211117215803775

添加成功的样子

image-20211117215829470

编写第一个查询

import java
from Method m
select m

image-20211117215908674

0x04 参考链接

https://mp.weixin.qq.com/s?__biz=Mzg4ODU4ODYzOQ==&mid=2247484326&idx=1&sn=fd055d23efe80f5c6758ce9bd01307c9&chksm=cff99396f88e1a80cd1e52c2a17649f6f20da7fe45b743925c80a90b3997395963a9afe84691&scene=178&cur_album_id=1970201600723910658#rd

   转载规则


《CodeQL系列之安装CodeQL》 ske 采用 知识共享署名 4.0 国际许可协议 进行许可。