Access注入

Cookie注入

什么是Cookie?
Cookie就是代表你身份的一串字符串,网站根据Cookie来识别你是谁,如果你获取了管理员的Cookie,
你可以无需密码直接登陆管理员账号。
为什么Cookie和注入擦出了爱情的火花?(原理部分)
在动态脚本语言中存在超全局变量可以获取多种传参方式(基本上)
很多时候开发在开发的时候为了考虑到多种接受参数,在接受参数的时候都是用多种解释传参的方法例如:
php中的 R E Q U E S T [ 可 以 获 取 P O S T ∣ G E T ∣ C O O K I E 传 参 注 : p h p 5.4 以 上 版 本 就 不 会 接 受 C o o k i e 传 参 了 。 如 果 说 开 发 用 了 _REQUEST[可以获取POST|GET|COOKIE传参 注: php 5.4以上版本就不会接受Cookie传参了。 如果说开发用了 REQUEST[POSTGETCOOKIE:php5.4Cookie_REQUEST]来接受参数?然后我们的POST和GET传参被Waf拦截了怎么办?
那么也许Waf没有对Cookie进行检测,我们尝试用Cookie进行传参,然后不就可以绕过检测机制!!

最简单的联合查询,因为是Access数据库,我们没有系统自带表,而且Access数据库只有一个数据库,不用纠结库名。那么怎么获取Access数据库的表名和字段名,方法只有爆破
账号密码一般在盛行Access数据库的年代,都在admin表的username和password字段中
注意点: Cookie注入的时候一定要把GET类型的传参删除,不然优先执行GET类型传参。
如果不知道库名怎么办?
就一个库,没必要知道
如果不知道表名怎么办?
只能靠爆破了,and exists (select*from表名)如果页面正常,就是存在这个表exists这个函数就是检查子查询能否查询到数据,如果能会返回一个True
SQLmap如何跑Cookie注入
例如:sqlmap.py -u “http:/l59.63.200.79:8004/shownews.asp”” --cookie “id=171” --level 2

有些时候WAF会禁止一些传参方式,这个时候要绕WAF,改变传参方式也是一种方式,这里学到一种Cookie注入的方式。
我们就直接以靶场的方式演示了:
在这里插入图片描述
在这里插入图片描述
进去之后发现是一个网站的页面,我们先随便点开个东西看看:
在这里插入图片描述
在这里插入图片描述
随后我们在url栏里面看见了get传参,那我们思考一下这里是不是会存在SQL注入?
试一试:
在这里插入图片描述
在这里插入图片描述
这里传个id=170返回了其它页面,我们接着测试。
在这里插入图片描述
在这里插入图片描述
这里当我想判断它是否存在SQL注入的时候,页面对我报错了!
那么判断可能这里存在防护,怎么办?
有防护那就绕过去,可以规则绕过,也可以检测绕过。
规则绕过可以是用其他函数替换要用的函数,用一些大小写或者是其他的方法去绕过
检测绕过就是使其不会被检测避开WAF

那么这里我们就来试试今天的Cookie传参,那么怎么传?
此处演示以谷歌浏览器进行:
先F12
在这里插入图片描述
在点击箭头所指模块
在这里插入图片描述
在这里找到Cookies的url,然后点击一下就行了,我们在右边的区域添加我们要的参数。
在这里插入图片描述
添加完之后F5刷新页面。
在这里插入图片描述
页面正常回传,说明Cookie传参也会被拼接进数据库。
这里我们再来看个东西:

<?php
echo $_REQUEST [ 'a' ] ;
$sql = 'select *from news where id='.$_REQUEST ['a '];
?>

如果它的代码是这么写的,那么request可以将接收到的get,post,cookie数据拼接进数据库
所以它网站的防护有时候只对get和post做了防御,那么cookie就成了漏网之鱼.
注意一点以上的演示并不代表这里就存在cookie注入,只能说明此处存在一个滥用cookie
Cookie使用是需要URL编码的,所以想在F12的application模块使用cookie需要将语句先进行URL编码
例如:
在这里插入图片描述
在这里插入图片描述
这次我们可以看到没有被防护拦截了,但是使用applicaition模块需要每次都进行URL编码,有点麻烦.
还有两种设置cookie的方式,一种是burp设置,另外一种是F12控制台设置.
在这里插入图片描述
抓包,我们在原来Cookie的位置加个分号把原来的结束掉然后在加个空格设置我们的id
我们再把它发送到单发包里去
在这里插入图片描述
在这里插入图片描述
我们能看到这些数据就是id=171时页面上的内容
这个时候我们想在后面接着写复杂的语句需要URL编码,这里burp有个模块:
在这里插入图片描述
在这里插入图片描述
图标所示位置可以进行URL编码

控制台设置:
在这里插入图片描述
在这里插入图片描述
如上写法,escape()是一个编码函数,回车之后我们发现这么写报错了,这里注意escape里面要是字符串要加引号
在这里插入图片描述
说完设置方式之后,再来看另一个问题数据库的不同是对SQL注入有影响的:Access数据库是非常老的数据库没有系统自带表也没有库名,它不能select 1,2…,想要这样后面必须接表名,它只能select * from 表
可以理解为Access只有自身这个库里面放着各种表,所以我们只能强行猜测了
例如:user admin news这些表

那么剩下的步骤就是进行联合查询
在这里插入图片描述
老步骤了猜字段,emmm这里我的谷歌出了点问题,我临时换个火狐操作…
在这里插入图片描述
emmm换了火狐,但是嘞虽然我们测试11控制台报错了说明还是10个字段,但是页面回显依旧正常…
这里我也很纳闷,就不往下进行了,大概的流程就是联合注入查询的步骤
在这里插入图片描述
回过头来大概知道为啥了…
注意点: Cookie注入的时候一定要把GET类型的传参删除,不然优先执行GET类型传参。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这道题根据提示应该是要找到账号密码登录才能拿到flag,所以我们要把账号密码查出来,这里差不多感觉一下像MD5加密后的密码我们去翻译一下
在这里插入图片描述
密码翻译出来是上图内容,我们去登录看看。
这里又尬住了,我没找到登录的地方,算了算了…

偏移注入

使用场景
在SQL注入的时候会遇到一些无法查询列名的问题,比如系统自带数据库的权限不够而无法访问系统自带库。
在cookie注入查不到字段的情况下
当你猜到表名无法猜到字段名的情况下,我们可以使用偏移注入来查询那张表里面的数据。
像Sqlmap之类的工具实际上是爆破字段的名字,但是如果字段名称比较奇葩,例如:H5scker_Passwd 之类的那就无可奈何了

*偏移注入的核心是table_name.即 库.表.字段
在这里插入图片描述
*判断出来多少字段之后,算table_name.占多少字段
*用总字段减去table_name.所占字段,剩下的再根据数据所在的位置对剩下的字段进行偏移
这里我们要知道SQL查询语句是拼接起来的,前后两部分的语句会分别返回各自的值,所以前面id的值可能会影响到后面占位数,导致注入点没有全部显示出来
这里我们通过不断猜测得到admin.*占16个字段
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
看这里我们还发现了底下还有个22,这跟之前看到的3,5,7为注入点不太一样了吧,漏了22
在占位数字后面加几个0
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
右键检查
在这里插入图片描述
在这里插入图片描述
flag在这!

Access如果查到很多数据那我们该如何取出来?
select top n

top 1 -->取一条数据
top 2 -->取两条数据

本次到这里就结束了!
未完待续…

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值