偏移注入一般在知道表名而不知道列名时,通过联合查询页面的数据回显,让字段偏移,显现出别的字段的内容
其中最重要的语法在于内连接INNER JOIN
SELECT columnName(s) FROM tableName1 INNER JOIN tableName2
ON tableName1.columnName=tableName2.columnName
可以表A自己连接自己,也可以表A连接表B
实例说明
发发鱼
随便点点,点击图片,发现疑似存在注入点
1. 判断注入点
报错,确认注入类型为数字型
开注
2. order by测试列数
在23时报错,判断为22列
3.使用联合查询,测试占位
报错。。好吧,猜测一下表名
使用and exists(select * from admin)得到回显,存在admin表
开始猜测表内字段,猜测出存在id、admin、password
4.通过*号判断表admin所占的列数
17时报错,16时正常,说明admin表的字段占6位
5. 使用链接查询,使admin表的内容出现在占位15上
注意admin表占6位,自己链接自己的时,一共占2*6=12位
原本15占位符的位置出现了一个时间,说明15位占到了admin表中关于时间的字段,只是不知道这个字段的名称
即admin表中的字段为x,x,x,x,(时间),x
此时*号内的内容为a.x,a.x,a.x,a.x,a.(显现的时间),a.x,b.x,b.x,b.x,b.x,b.(时间),b.x
先前我们测试到admin表中的数据有id、admin和password
如果我们把b表的数据提前,a.时间的位置就会被往后推,从而显现出别的数据
得到用户名和md5加密的密码,查询得到即可
用工具扫一下后台网站就可以进了