返回介绍

2.3.5 SQL 执行监控工具

发布于 2024-10-11 22:07:42 字数 2045 浏览 0 评论 0 收藏 0

SQL 执行监控可以非常高效地帮助我们发现一些 SQL 注入和 XSS 等问题,帮助我们非常方便地观察到数据在 Web 程序与数据库中的交互过程,在做模糊测试时,只需利用模拟测试工具爬取页面的 URL 及表单,提交特定的参数如带单引号(‘)等,通过分析 SQL 执行日志则可以非常准确地判断出 SQL 注入漏洞是否存在,同样的注入<>”等符合也可以用来测试 XSS 漏洞。

图 2-34

这里分别针对 MySQL 和 MSSQL 列举 SQL 执行监控的工具和使用方法,其中着重介绍 MySQL 的监控,因为 PHP 大多都是使用的 MySQL 作为存储。

针对 MySQL 的执行监控,笔者没有找到比较好的工具,于是在自己的代码审计系统上加入了这么一个插件,主要原理是开启 MySQL 的 general_log 来记录 MySQL 的历史执行语句,它有两种记录方式,默认是通过记录到文件方式,另外一种是通过直接记录到 MySQL 库的 general_log 表中,为了更方便地查询,我选择的是记录到 MySQL 数据库的方式。另外这个功能的开启方式也有两种,一种是直接用 MySQL 的 SQL 语句开启,SQL 语句如下:

set global general_log=on ; 

SET GLOBAL log_output='table' ;

执行结果如图 2-35 所示。

不过这些步骤在笔者的工具中都自动完成了,同时它还支持快速过滤实时预览。只要点击下断,操作完之后点击更新即可看到这段时间内在 MySQL 执行过的所有 SQL 语句,主界面如图 2-36 所示。

图 2-35

图 2-36

另外一种开启方法是在 MySQL 配置文件中修改,在[mysqld]配置中加入如下代码:

general_log=ON

general_log_file={ 日志路径 }/query.log

重启 MySQL 后可以看到所有的 SQL 查询语句都会记录在设置的这个文件中。

SQL Server 执行监控也很简单,在 SQL Server 上自带有一个性能监控的工具 SQL Server Profiler,在开始菜单里可以找到它,使用 SQL Server Profiler 可以将 SQL 执行过程保存到文件和数据库表,同时它还支持实时查看和搜索。

下面我们来看看怎么使用它,打开 SQL Server Profiler 后,在左上角的菜单栏里选择“文件→新建跟踪”,在常规栏输入跟踪名(随意)后,点击“事件选择”标签,我们只需要 SQL 执行过程,所以要过滤掉一些干扰的东西,比如登录、退出等,在事件选择里只保留 TSQL 下面的 SQL:BatchCompleted 事件,然后点击“运行”,如图 2-37 所示。

图 2-37

运行后监控的到 SQL 语句如图 2-38 所示。

图 2-38

从图中监控结果可以非常清楚第看到之前执行的 SQL 语句以及开始执行时间、结束时间。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文