虽然这段时间没有来写博客,但是自己也没有闲着,先是处理各种工作和生活的事情,然后近一周都在学习SQL注入。自己之前算有些SQL的基础,但是真的尝试对一个站进行注入尝试的时候,才发现是处处碰壁,开始的时候只是针对着Login界面使劲,后来看了些网上的资料,可以针对asp\php\jsp等页面也可以进行,于是又接连换了三家网站作为注入尝试的目标,但是都没有能够成功。今天又是捣鼓了一个上午,按照网上的教程一点一点学着试,虽然还没有注入成功,但是来记录下自己的尝试过程吧!
首先我们的目标是一家医疗站点,之前曾经对其的Login页面进行过SqlMap扫描,没有成功;这次是针对其一般的asp页面进行的注入尝试,为了安全考虑,下面的网址中隐去了域名的关键信息。
Step-1:
首先随意找到一个含有id参数项的页面,如某科室的介绍页面:www.***com/data/section.asp?id=14,在其后输入“and 1=1”和“and 1=2”进行尝试,发现页面显示会有差异:1=1时没有了文字介绍,1=2时文字和图片介绍都没有了,于是感觉这个页面没有对于用户输入进行严格的过滤,存在注入的可能;
Step-2:
判断是什么数据库类型呢?一般asp会搭配Access和SQL Server数据库,自己使用网上介绍的特有数据表方法进行测试,排除了SQL Server数据库,那么很有可能是一个Access数据库,另外在语句后面进行注释符的测试,发现“--”是错误的,而NULL即%00可以使用,也提示我们后台很有可能是一个Access数据库;
Step-3:
接下来开始猜测可能的表、列,自己使用的式子如下:
>>***id=14 and exists (select * from admin),结果同1=1时,判断存在admin表;
>>***id=14 and (select count(name) from admin ) > 0,结果同1=1,判断存在name列,同样可得判断存在id列;
Step-4:
猜测字段值,首先是name的值的长度:
>>***.id=14 and (select top 1 len(name) from admin) ,结果<3时错误,<4时正确,故该字段长度为3;
>>***.id=14 and (select top 1 abs(asc(mid(name, 1, 1)))) from admin) >?,通过不断尝试数值,最后确定为10795;Access的用户名经常会出现汉字,因此其ASC值为负数,所以abs()取其绝对值,然而汉字编码中并没有这么大的汉字....
自己猜测可能用户名为“管理员”,但是不晓得下一步该如何进行,自己也尝试了联合查询union select 1,2,3 from admin,但是返回的都是错误。
盲注果然是个体力活!自己是不是应该再次考虑下借助工具呢?
阅读(6363) | 评论(2) | 转发(1) |