SQL注入详解(二)-挖掘

前言

没实例,纯粹抛砖引玉,大牛请飘过~
这个系列很久没更新了,惭愧。

自动挖掘

自动挖掘主要是基于工具的一种方式,原理即在于批量采集网站中参数传递的地址,插入注入语句判断是否与数据库产生了交互。最原始的工具,是啊D注入工具,早期我们经常将啊D与URL采集工具结合起来,批量挖掘注入点,但是目前这种方法利用价值不大。所以我这里提到的自动挖掘,是基于指定站点的探测。我一般去挖掘注入漏洞,会在一开始就自动挂载WVS扫描,WVS是一款非常优秀的自动化扫描工具,不仅能够探测出SQL注入漏洞,对于XSS漏洞的挖掘也是非常厉害的,当然,这是题外话。
当然了,专门的SQL注入挖掘工具有没有呢?也是有的,但是我很少去用,这里给大家提供一篇文章,供大家研究。

[http://www.php.cn/mysql-tutorials-362433.html](http://www.php.cn/mysql-tutorials-362433.html)

本文我主要想介绍一下我关于手动挖掘的一些经验总结,当然了,这里的手动挖掘,不代表纯手工注入,我们现在拥有了sqlmap这样优秀的工具,手工注入是繁琐且没有必要的(不否认学习手工注入的重要性),所以我们现在去挖SQL注入,一般就是半自动挖掘,手动去寻找注入点,然后用工具配合着利用。

半自动挖掘

这是本篇的重点,我们都知道去测注入测注入,那么在url后面加个单引号,不存在就不存在了吗?显然不是。我们对一个网站做测试,首先要对网站的架构做一个整体的判断,那么点开链接,最直观的是asp,jsp,php或者html,htm,这对我们注入并没有太大的用处,我们这里说的注入,是针对数据库的注入,我们首先需要根据常见的脚本语言和数据库的搭配,判断出属于哪个数据库,具体的注入流程我这里就不说了,这篇主要是整合一下挖掘的点。

伪静态

我之所以提到直观判断,是想说说关于伪静态的挖掘,现在许多站点都是伪静态,大家想想也可以理解,不用数据库?自己手写每个页面?还都是大型站点?不可能的。最直接的一种利用是自己构造注入点,比如xxx/sid/123.html,我们完全可以判断是xxx.php?sid=123,可以先把html去掉,看看行不行,当然,更多的情况是去掉html就访问不到了,我一般就会放弃对这种站点用这种方式注入了,那怎么办?就不搞了吗?不存在的。下面就是去找交互,搜索框是最容易察觉到的地方,比如,


image.png

我在搜索框中加了个单引号,直接禁止访问了,这时候再看url,是不是变成了我们喜闻乐见的形式了呢?
那想想,还有哪些地方是需要数据交互的呢?登陆,注册,留言,上传,提交。这是我目前对于伪静态挖掘的最好的思路,欢迎分享其他思路。

常规的动态网站挖掘思路

第一、肯定是get型注入(访问页面使用get方式)
这种是很常规的一个点了,但是不应该仅仅只对于一个页面,一个参数,加个单引号,不报错就算了,这样太暴力了。如果不是针对整站的防注入程序和软waf,我们应该对每个页面都测试,防止程序员某些页面过滤不严谨。其次,每个参数,都要去尝试注入,例如:

http://www.xxx.cn/module/sitesearch/index.jsp?columnid=0&webid=100&modalunitid=55963
http://www.xxx.cn/module/sitesearch/index.jsp?columnid=0&webid=100&modalunitid=55963

有三个参数,columnid webid modalunitid,都可以加个单引号去注入。有时候,对于php的站点,还可以加个%bf,防止服务器开启了魔术引号,加单引号不报错。如果能测出来,可以在参数后面在*,用sqlmap去跑。

第二、post注入(留言,搜索,登录(包括后台登录框),注册)
搜索框很多都是字符型注入,这里要注意语句的闭合,当然了,报错的时候会把语句都爆出来,比如,query = “select * from admin where id=(‘”$_GET[‘id’]”’),如果我们直接写id=1 and 1=1,那么组合起来是” query = “select * from admin where id=(‘”1 and 1=1”’),这样是不可能执行的,我们要构造闭合语句”’) and 1=1 (‘”1=1,sqlmap里面也给我们提供了对于闭合的用法,--prefix和--suffix,写法大致如下--prefix="')" --suffix"('"。留言,登录,注册里面,不仅要测每个参数值,有时候还要注意参数名,细心和耐心很重要。

第三、HTTP头注入
这种可能出现的漏洞的参数,主要是client-ip,referer,x-forward-for等,如果网站把ip记录到数据库里面,很有可能会出现注入,那哪些点可能会记录呢?主要是登录,注册,留言的地方。这里我们可以用Modify工具,在HTTP请求头里面添加上client-ip:1.1.1.1‘带着这个去访问一些页面,可能会报错,那我们就可能挖到注入点。那我们的神奇,sqlmap,也提供了利用方式,就是我们的header参数,-headers=HEADERS。其实HTTP注入现在也很多,可以尝试去挖一挖,或许会用发现。

第四、app挖掘

现在许多网站都有自己的APP,而这些APP,安全性普遍比较差,我们可以配置代理,使用burpsuite去挖一挖,或许会有意外发现。

你可能感兴趣的:(SQL注入详解(二)-挖掘)