【SQL注入工具猜解法】
普通针对ACCESS数据库的注入方法确实很烦,因为猜解本来就很烦的工作,而且这些表段这些字段还要自己手动猜解,所以人们想到了用程序去实现,于是网络上出现了不少好的工具,随着这些工具的出现,使SQL注入更加的容易。这一小节我们将为大家稍微演示一下SQL注入工具的使用。但是笔者还是想说,作为网络安全爱好者,应该懂点基础的原理,会用工具并不代表你掌握了这个漏洞。
工具:啊D的SQL注入工具
检测对象:雨点下载系统
URL:http://192.168.1.123/yd/
我们知道雨点下载系统list.asp view.asp对id参数过滤不严而产生了SQL注入漏洞,并且雨点下载系统是开放源码的,所以我们很容易知道其数据库的结构。其账号密码的信息放在表userinfo里,对应的分别为id usr pwd。
1.扫描注入点
填上要检测的网址,点检测,工具便开始自动为你检测了,如图1:
图1 这里可以看到,工具为我们扫到了两个注入点,我们就拿其中一个继续吧,选中一个网址,右键会出现菜单,点注入检测,会跳到注入检测的的画面。
2.检测表段
点检测然后程序就做好准备检测表段了,点检测表段,程序就会自动开始为你检测表段,不用再像以前输入and exists (select * from 表段名)来判断了,程序速度当然比手工快多了。如图2:
图2
细心的读者会看到软件的状态栏不停的显示工具所猜解的表段呵呵,我们可以向软件学习SQL注入的语法。
3.检测字段
很遗憾,程序只检测到一个表段落config,我们知道账号密码在另一个表段的userinfo,所以我们手动添加一个userinfo,在检测表段那栏点击右键会出现相应的菜单,选手动添加表,见图3:
图3
填加userinfo然后选中它就可以开始检测字段了。点检测字段,程序就开始自动猜解字段,如图4:
图4
猜解出三个字段usr pwd id,如果没有猜解出来也可以自己手动添加字段。
4.猜解字段内容
选中你要猜解的字段点右边的检测内容就可以帮你猜解长度并猜解其字符内容,如图5:
图5
从图中看出已经猜出usr的内容为admin pwd的内容还在检测中呵呵。最后它会猜解出其它的内容,如图6:
图6
5.猜解后台
对于ACCESS数据库的网站,有了后台管理员的账号和密码,没有猜到后台也没有用,所以往往我是猜出有了后台才会进一步的SQL注入的,否则猜出账号密码也没有多大的用处。当然如果目标是电影站,那用SQL注入就可以得到超级会员的账号密码,就可以收费电影免费看啦?点左边的管理入口检测并可以猜解后台了。如图7:
图7
选中你认为可能是管理入口的连接点右键会出现如图8:
图8
点用IE打开连接就可以打开后台的页面,输入你刚才猜解出来的账号密码就可以进后台,至于进了后台你要做什么,就看你的了。
【Union查询猜解法】
当SQL注入的是ACCESS数据库的时候,我们可以利用的就有子查询与UNION查询了。
子查询在初级篇里就讲过了,就是常规的and exists (select * from admin)之类,比如list.asp文件访问的是article这个表,我们利用子查询可以查同一个数据库下的admin表里的账号密码,也可以叫做跨表查询。当然不在同一个数据库的话可以跨库查询,后面我们会讲到。Union查询其实就是用到SQL语法中的Union函数了,关于它的用法请参考第一小节,我们开始实战Union查询。
检测对象:雨点下载系统
网站URL:http://down.jingshan.cn/list.asp?id=78
管理后台:http://down.jingshan.cn/admin/
本来想本地调试的,可是我的系统出了点问题,所以上网找了个站测试一下Union查询,没有破坏的意思,见谅。至于如何判断有SQL注入漏洞,前面已经说的很详细了,只不过这个服务器把IIS的错误信息给屏蔽了,所以当出错的时候会返回:处理 URL 时服务器上出错。请和系统管理员联络。呵呵,没关系,我们继续。前面我们已经知道雨点下载系统的账号密码信息放在userinfo表段里面,其对应的字段分别为id usr pwd,而这个注入点我们已经确定其存在,所以我们构造如下的语法:
union select 1 from userinfo 结果返回错误的页面,如图9:
图9
如果不出意外的话,本来该显示的是指字段列数不一致,因为Union函数本身的特殊性。我们继续构造如下的语法:
union select 1,2 from userinfo
union select 1,2,3 from userinfo
一直到union select 1,2,3 from userinfo才返回正常的页面,说明这里就要列三个字段了,并且发现刚才错误的地方现在显示为1,也就是说它可以用来显示我们想要知道的数据。见图10:
图10 我们构造语法:union select usr,2,3 from userinfo会显示账号的信息,如图11:
图11 我们构造语法:union select pwd,2,3 from userinfo则会显示出密码的信息,如图12:
图12当我们用这个账号密码登录后台的时候,意外的发现出错了,如图13:
图13
读者朋友们知道什么原因吗?对,我们要看下数据库的构造,userinfo表里面有个userclassid字段,表示他们所对应的权限,而userclass表很明确的告诉了我们什么ID对应着什么权限,这里我们要进管理后台,当然得要系统管理员的账号密码。数据库表如图14
图14 既然知道了这些,所以我们在构造Union查询的时候要加个条件where userclassid=1,即我们要得到账号信息就构造语法:union select usr,2,3 from userinfo where userclassid=1,得到的账号为fang,见图15:
图15同理我们构造语法:union select pwd,2,3 from userinfo where userclassid=1就可以得到密码信息,如图16:
图16 我们登录后台试下,输入得到的账号密码登录,就可以进到后台,如图17:
图17 就这样轻而易举的进了网站的后台,知道Union查询的威力了吧。
【ACCESS跨库查询】
前面我们讲了ACCESS的SQL注入,用到了子查询与联合查询,但是始终在一个数据库里,如果我们遇到要测试的不在同一个数据库里怎么办,有没有办法突破。我可以告诉你,有,不过要有条件:
1.使用union查询必须知道前一个select里表的字段数
2.必须知道目标数据库的所在位置,绝对路径
如果玩过黑客防线第四轮攻防实验室的朋友,都知道当时第一关就设置的2个asp+access的下载系统,一个是雨点下载系统,一个是盗帅下载系统。当时的情况是这样的:盗帅下载系统可以暴出数据库但是不让下载,似乎也没什么地方可以注射,而雨点下载系统数据库可以暴且可以直接下载,还可以注射。不过雨点的后台很简单,没什么可以利用的地方,这个时候,你该如何突破。有人开始追寻盗帅下载系统的漏洞,后来还是发现了盗帅的漏洞,而有的人则是放弃了,是不是有点过早放弃呢,而当时有人就通过雨点系统的注射点对盗帅系统的跨库查询而得到盗帅的后台密码,这可谓是跨库查询的经典的例子。感兴趣的可以参考下这里:http://www.4ngel.net/article/46.htm,本小节不再详述。