codeql学习笔记分享1

2024-04-16 870 0

1.环境安装

解释一下什么是codeql吧:

CodeQL 是一种强大的静态代码分析工具,由 GitHub 开发。它可以用于发现和修复软件中的安全漏洞、漏洞和代码质量问题。CodeQL 通过将编程语言的语法和语义建模为一种特殊的查询语言,使得用户可以编写自定义查询来分析代码库。它支持多种编程语言,包括 C、C++、C#、Java、JavaScript、Python 等。用户可以使用现有的查询来发现已知的问题,也可以编写自己的查询来查找特定的问题或需求。

CodeQL 的工作原理是首先将代码转换成一种中间表示(IR)也就是我们这里要用到的数据库,然后在这种 IR 上执行查询。这种方法可以让用户不受代码语言的限制,因为查询是在 IR 上执行的,而不是直接在源代码上。这使得用户可以使用相同的查询语言来分析不同编程语言的代码。同时,CodeQL 还提供了丰富的 API 和库,使得用户可以编写更加复杂和高效的查询。

1.环境准备

https://github.com/github/codeql-cli-binaries/releases

codeql学习笔记分享1插图

解压,设置环境变量

codeql学习笔记分享1插图1

codeql学习笔记分享1插图2

OK,第一步已经完成了。

2.规则库

官方规则库,各种内置的ql脚本,这部分是开源的。里面是各种ql脚本,也就是我们以后要学习的东西地址:

https://github.com/github/codeql(git clone下来,或者下载下来。最好和codeql_cli也就是上面那个放一起)

3.vscode_codeql插件

codeql学习笔记分享1插图3

安装这个插件。设置可执行路径:

codeql学习笔记分享1插图4

这里环境已经配置好了。

2.生成数据库

这里以java语言的数据库为示例:

原则要生成数据库的源文件:我这里选择的是java-sec-code 地址:https://github.com/JoyChou93/java-sec-code

因为java-sec-code是通过maven进行依赖管理,需要我们事先安装好maven,codeql识别出是个maven项目之后会自动对项目文件进行编译(用到mvn命令),通过编译得到的文件创建数据库。

安装maven: 默认你已经安装好java的jdk了,没有安装记得安装,并配置好环境变量

下载:https://maven.apache.org/download.cgicodeql学习笔记分享1插图5

配置环境变量:codeql学习笔记分享1插图6

codeql学习笔记分享1插图7

codeql学习笔记分享1插图8这就是安装好了。我在这里遇见一个错误。后面在创建数据库的时候,一直创建失败,就是这一部分的原因。这里maven识别到的一定要是jdk下的jre,不能是如图:codeql学习笔记分享1插图9

codeql学习笔记分享1插图10

注意看区别

创建数据库的命令:

codeql database create java-sce-code-database  --language="java"  --command="mvn clean install --file pom.xml" --source-root=D:\CODEQLALL\java-sec-code-master\

codeql学习笔记分享1插图11codeql学习笔记分享1插图12

成功。

3.利用利用数据库进行查询:

codeql学习笔记分享1插图13

选择语言选择数据库

codeql学习笔记分享1插图14

打开规则库:codeql学习笔记分享1插图15

file ->open
找到Java的规则库如图:codeql学习笔记分享1插图16

你可以在这创建一个.ql的脚本也可以直接用写好的。

我们自己写一个查看(我在src下面写了一个test.ql)

codeql学习笔记分享1插图17

也可以在这个地方查看,会主动识别的codeql学习笔记分享1插图18

我们写了一个查询调用了executeQuery方法的地方:codeql学习笔记分享1插图19

点这两个地方运行。最好我们看一下查询结果:

codeql学习笔记分享1插图20

codeql学习笔记分享1插图21


4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

苹果试图保护你的隐私,OpenAI可能做不到
Shuffle:一款完全自动化的安全栈增强平台
如何使用CODASM编码Payload并降低熵值
SessionExec:一款针对会话安全的安全命令测试工具
Arkime:一款大规模数据包捕获和索引数据库系统
从蓝队流量角度分析Shiro-550反序列化漏洞

发布评论