查找注入点
注入点一般存在于数据交互的位置,比如新闻,要事,各种活动……等等位置,所以先访问新闻页面,打开的网址是:http://192.168.1.102/NewsInfo.asp?Id=131
,但是不知道这里是否存在注入,那就先猜测这个页面存在注入点吧
验证是否存在注入点,payload:?Id=131%20and%201=2
(当然使用别的语句也能实现.),发现页面变成了下面这样,显示异常,则可判断其存在注入.
猜表名,这里我是借助burpsuite
进行猜测table_name
如果使用这种方法的话会对字典有一定的要求,不过兼容性好,速度慢,啊D明小子也是使用的这种方法,如果可以的话,还是先尝试进行
联合查询
配置好代理后,使用payload:and exists (select * from admin)
,进行抓包,并发送到Intruder
模块
将需要爆破的位置设置变量,并配置字典
配置完成后,进行攻击,并对返回包大小进行判断,发现存在两个表:user
和Manage_User
得到table_name
后,尝试猜columns_name
这里同样使用的是字典,所以,成功性还是降低了
同样使用burpsuite
,使用payloadand exists (select user_name from admin)
进行爆破
通过爆破发现得到3列:id
,username
,password
得到columns_name
,进行最后一步,爆数据
我使用的逐字猜解法,虽然慢点,但是稳妥,嘿嘿
先进行username
的数据长度进行猜解,同样使用burpsuite
进行猜解
得到第一列的长度是5,所以使用payload:and (select top 1 asc(mid(username,1,1)) from Manage_User)=97
开始爆数据
关于mid(column_name,strat,step):数据截取函数,我标注参数含义,应该能理解,以这个payload来说,就是对username列的第1(top 1)条数据的第
1
位(start)进行截取,截取1
位(step),因为我们已经知道第一行得到的数据长度为5,所以start取1-5即可.
PS:因为这里恰巧是
admin
,所以直接使用97-122就可以爆出来,但是因为数据是区分大小写的,如果得到的数据不是5位,则可能包含其他内容,所以可以使用32-126
进行猜解
ASCII解码,得到用户名admin
同样的方法进行password
的数据猜解,先猜解长度,payload:and (select top 1 len(password) from Manage_User)=5
猜解数据,payload:and (select top 1 asc(mid(password,1,1)) from Manage_User)=65
进行ASCII解码
发现可能是md5加密,进行md5解密,得到password:
尝试进行后台登陆
结束
这个其实使用
sqlmap
完全可以实现一把梭,但是还是尝试手注吧,多练习一下,嘿嘿.其实还有另外一种方法,就是联合查询,速度会快很多,但是兼容性不是很好,比如这次这套cms,就不能进行联合查询,只能用这种方法进行注入.