一、简介
1.1、cookie定义:
Cookie是在HTTP协议下,服务器或脚本可以维护客户工作站上信息的一种方式。
通常被用来辨别用户身份、进行session跟踪,最典型的应用就是保存用户的账号和密码用来自动登录网站
二、cookie注入原理
2.1、简介:
cookie注入与传统的SQL注入基本上是一样,都是针对数据库的注入,就是注入的位置不同,注入形式不同
2.2、原理:
ASP脚本中的request对象,被用于从用户那里获取信息。
Request对象的使用方法:request.[集合名称](参数名称)效率低下,容易出错
eg获取从表单中提交的数据时:request.form("参数名称")
但ASP中规定也可以省略集合名称:request("参数名称"),当使用这样的方式获取数据时,ASP规定是按QueryString、Form、Cookies、ServerVariables的顺序来获取数据的。这样,当我们使用request("参数名称")方式获取客户端提交的数据,并且没有对使用request.cookies("参数名称")方式提交的数据进行过滤时,可能存在Cookie注入
2.3、条件:
(从原理可以分析出存在cookie注入的条件)
1:cookie提交到数据库的语句未被过滤,或过滤不严谨
2:程序对提交数据获取方式是直接request("xxx")的方式,未指明使用request对象的具体方法进行获取
2.4注入步骤:
第一步:寻找参数位置
eg:.asp?id=xx这样带参数id=xx
第二步:去掉参数,观察参数影响
eg:将“id=xx”删掉,看页面是否正常,正常,则说明参数不起作用。反之不正常,说明参数在数据传递中启直接作用
第三步:(先清空网址)输入“javascript:alert(document.cookie=“id=”+escape(“xx”));”
按Enter键后弹出一个对话框,内容是“id=xx”
然后重新输入原来URL回车
如果显示正常,说明是用Request(“id”)方式获取数据
//注释
document.cookie:表示当前浏览器中的cookie变量
alert():表示弹出一个对话框
escape():对字符串进行编码
第四步:判断是否存在漏洞
将SQL判断语句带入,并重复第三步
①“javascript:alert(document.cookie=“id=”+escape(“xx and 1=1”));”
②“javascript:alert(document.cookie=“id=”+escape(“xx and 1=2”));”。
若①正常,②不正常,则说明存在注入漏洞,并可以进行cookie注入
第五步:cookie注入
构造cookie注入payload
javascript:alert(document.cookie="smallclass="+escape("xx order by 2"));
javascript:alert(document.cookie="id="+escape("284 union select 1,…… from xx"));
……
三、插件示例
3.1、sqli-lasb21
用admin登录进去,可以看出这是cookie注入,value一看就是加密过
YWRtaW4%3D 中的%3D 对应URL码中的 =
一般get和post的参数采用base64等加密方式将数据进行加密,再通过参数传递给服务器
----->YWRtaW4= ---------> admin
方法一:用burpsuite进行抓包后修改
方法二:安装火狐的cookie manager等插件进行修改cookie
第一步:先将注入语句转换为base64加密后密文
第二步: 将加密后密文填到cookie value里并保存
第三步:刷新页面,使cookie重新加载
版权归原作者 黑色地带(崛起) 所有, 如有侵权,请联系我们删除。