Access注入-Cookie注入
Access注入-Cookie注入
1、Cookie简单介绍
2、Cookie注入原理及方法
一、Cookie简单介绍
What is Cookie?
储存在用户本地终端上的数据
类型为“小型文本文件”,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息
一个 Web 站点可能会为每一个访问者产生一个唯一的ID, 然后以 Cookie 文件的形式保存在每个用户的机器上。
简单讲就是,代表身份的字串字符串,网站根据cookie来识别你
HTTP协议本身是无状态的。什么是无状态呢,即服务器无法判断用户身份。那么只能通过cookie来确定用户的身份
二、Cookie注入原理及方法
原理:输入的参数以cookie的方式进行提交。(PS:php5.4以上就不会接受cookie传参了)
GET注入的方式是通过在URL栏后进行传参注入语句,POST则是通过表单的方式,而Cookie这两个方法都不能适用
OK,,对我的跳跃式思维说声抱歉,,
什么情况下用Cookie注入呢?
answer,,对get传参和post传参进行了拦截
OK,,思考 一个问题 当对我们的当前所掌握的方法不适用怎么办呢
First,要思考为什么不适用,哪里和之前不一样
OK,,现在我们要用POST或GET进行注入了,之后我们发现不行
为什么不行呀,因为对post和get进行了拦截
OK,,原因找到了,那么需要想办法了
第一,破坏规则,即想办法绕过拦截
第二,另寻道路,找不拦截的进行注入
OK,,以上便是我们的渗透思路
当网站对我们的get和post传参进行拦截,选择用cookie的方法注入,是第二种思路
OK,,现在开始进行cookie注入的讲解
到现在为止,应该明白了我们通过cookie传参的方式进行注入
那么,思考 一个问题 cookie注入满足的条件
First,网站不拦截cookie传参
其次,就是get注入和post注入满足的条件了
what is?
传入的数据会被当做sql代码执行
OK,,下面开始吧
写的是Access数据库的cookie注入,so,需要对Access数据库进行一些了解
Access数据库语法与MySQL不同
像,,放在MySQL数据库正常的语法在ACCESS数据库里可能会出错
比如 :select 1,2,3 这个在MySQL数据库是非常正常的语句
而在Access里却不行,因为select后面必须跟表,,像,,select 1,2,3 from admin ,, 这个就可以正常执行
问题来了:不知道表呀,咋跟呢
根据上面的渗透思路,,思考一下
第一,破坏规则,绕过跟表
第二,另寻道路,想办法获取表
想到了,,像MySQL数据库都有 系统自带表,那么Access会不会也有呢,,可以试一下
可能要给你 说声抱歉了,,像,MySQL、mssql、Oracle都有系统自带库,可以通过系统自带库查询,Access数据库里没有系统自带库 ,,o(╥﹏╥)o
只能 强行猜解了,,苦逼
猜到了表,,不知道字段名怎么办,,再次强行猜解,,Fuck
砸电脑了要,,Fuck me 这不是吗,,误入歧途了家人们
回到正题,该学还得学,来意淫一下,会了技术的你有多NB,,3分钟啊
OK,,在Access数据库中判断表名的方法
exists(select*from 表名)
如果表名存在,则页面正常
若表名不存在, 则页面出错
cookie注入的时候一定要把GET类型的传参删除,不然优先执行GET类型传参
猜表,猜字段,数据库名怎么猜呀,,这个就不用猜了,,Access数据库只有一个库,,猜了也没有意义
Cookie传参需要URL编码,要把传参的值进行URL编码
如何获取Cookie?
1)通过burp抓包
2)通过浏览器插件
3)通过JavaScript语言Cookie
burp抓包很简单,以前博客写过,抓Cookie用这个方法比较麻烦,不推荐
浏览器插件(推荐,比较方便)
EditThisCookie 浏览器的扩展程序里安装这个插件,谷歌浏览器有些特别,要是去官方网上扩展商店下载,需要 科学的方法进行访问,建议 找个Chrome网上商店镜像站
别忘了对传参值进行URL编码
通过JavaScript语言设置Cookie
F12调出浏览器开发者工具,选中Console
document.cookie="id="+escape()
cookie名字为id escape是一个函数 编码,这个函数会进行一次url编码