2.3.5 SQL 执行监控工具
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论