本篇文章给大家分享的是有关借助Burpsuite的访问数据库手工SQL注入是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
环境介绍
目标系统是之前在网上偶然下载的一个CMS系统,在本地装了一个Windows服务器的虚拟机,开启IIS。因为是访问数据库,所以不需要安装相关的数据库服务,再其根目录的数据<代码>/代码>文件夹下有个<代码> data.mdb 代码>文件,即为该数据库文件。
发现注入点
在测试环境里看了一下站点的情况,发现这个CMS在读取新闻内容的时候,URL为http://172.22.10.239/info.asp? <代码>id=240> 代码的形式。顺手在<代码> id> 代码后面加了个单引号,结果竟然报了500的错误!
进一步进行确认,考虑到这里的<代码> id> 代码应该是数据库中的行号,猜想一下相关的查询语句可能的构成应该为:
SELECT {col_name},得到{table_name}, WHERE “id”,=, {id}
查询语句里面的<代码> id> 代码大概率是通过拼接的方式写进去的。为了证实这个猜想,构造一个有效载荷:
? id=240 +和+ 1=1 +
<代码> +> 代码号在URL中是等同于空格的,为了避免问题空格就用<代码> + 代码>代替。
这时候发现依然是500,难道判断错了?还是后面还有别的什么语句吗?不甘心的又尝试了一下<代码>或代码>进行拼接:
? id=240 +或+ 1=1 +
这下可以正常显示出页面了。那基本就能确定此处存在注入点,而且大概率是<代码>和代码>字符被替换了。
问题分析
既然发现了注入点,就可以尝试注入。正常的手段是去试过滤规则,但是因为目标是一个CMS,我们手里有后台的源码,因此直接开始对相关页面的源码进行分析,看看它到底用了什么规则去拦截我们的输入。
先打开<代码>信息。asp代码>文件,找到处理<代码> id> 代码参数的地方。在开头的第4行就是一个赤裸裸的SQL拼接,语句与我们猜测的完全一致:
那这里的<代码> rq() 代码>又是啥?在<代码>图书馆。asp代码>文件中找到了这个函数的定义:
str_safe函数定义:
看到这里,其实一切规则就都明白了,我们输入的<代码>{空格}和代码>是在过滤列表中的。那么下一步就是如何绕过并且进行注入了。
尝试注入
访问数据库与Mysql数据库注入的区别主要体现在访问是没有,null