web安全入门(第五章-1)cookie注入

一、cookie注入

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

cookie注入满足什么条件?
1.满足的条件[]
2.网站会获取cookie传参然后和原有sql语句拼接在传入数据库。

为什么Cookie和注入擦出了爱情的火花?(原理部分)
在动态脚本语言中存在超全局变量可以获取多种传参方式(基本上)
很多时候开发在开发的时候为了考虑到多种接受参数,在接受参数的时候都是用多种解释传参的方法
例如:
	php中的$_REQUEST[] 可以获取POST|GET|COOKIE传参


		注:php 5.4以上版本就不会接受Cookie传参了。


 如果说开发用了$_REQUEST[]来接受参数?然后我们的POST和GET传参被Waf拦截了怎么办?
那么也许Waf没有对Cookie进行检测,我们尝试用Cookie进行传参,然后不就可以绕过检测机制!

http被称为无状态,无连接

cookie通过字符串来确定你的身份[本身就是不安全的]当别人获得你的cookie就可以登录你的账号。

安全不是绝对的, 用户的体验 是一个对立面

 cookie注入在什么情况下使用:
  post  get传参情况下产生了拦截所使用的

遇到拦截需要思考怎么解决

1.找个不拦截的东西{get post cookie head里面的传参}

2.寻找规则。知道他为什么拦截然后绕过

cookie注入满足什么条件?

 1.注入满足的条件 [用户的输入必须得到控制/输入的东西会被当做代码执行]
 2.网站会获取cookie传参然后和原有的语句拼接在传入数据库。

二、怎么设置cookie

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

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

方法一:
	抓取数据包直接修改数据包的值,添加一个Cookie字段在请求头里面

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

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

方法二:用Javascript来设置Cookie
	我们可以尝试使用Javascript来设置Cookie
		我们先按F12调出浏览器的开发者工具
我们选择Console,打开浏览器的控制台,输入设置Js的语句就可以了
document.cookie="id="+escape("171")

通过浏览器Document.cookie来设置Cookie 

Cookie名字为 id escape是一个编码函数,这个函数会进行一次URL编码

三、Cookie注入靶场讲解

  最简单的联合查询,因为是Access数据库,我们没有系统自带表,而且Access数据库只有一个数据库,
不用纠结库名。那么怎么获取Access数据库的表名和字段名,方法只有爆破账号密码一般在盛行Access数据库
的年代,都在admin表的username和password字段中.

注意点: Cookie注入的时候一定要把GET类型的传参删除,不然优先执行GET类型传参。

如果不知道库名怎么办?
	就一个库,没必要知道

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

如果不知道字段怎么办?
	下节课我们将教你偏移注入,来应对不知道字段名的情况

SQLmap如何跑Cookie注入
sqlmap.py -u "http://59.63.200.79:8004/shownews.asp" --cookie "id=171" --level 2

Cookie注入常见问题汇总

1.Cookie注入常见吗?
老一点的ASP网站常见,PHP看版本,因为高于5.2以上的php版本他的$_REQUEST将不再接受cookie传参

2.COOKIE注入时为什么要删除URL内的id传参
因为它传参进去会有一个输出,cookie里我们也传参了一个id数值,他会优先接受GET的传参,具体也是要看语言的,我测试过,PHP会优先接受Cookie传参

3.为什么可以cookie注入
因为在这里接受参数的时候使用了REQUEST,他可以接受get 和POST 和 COOKIE的传参

4.为什么没用到information_schema
access数据库里没有系统自带表,只能猜

5.不能查information_schema怎么得知表名
可以靠爆破和尝试一些常用表名(例如:news、admin、user)

6.为什么cookie注入里查找回显点语句后要加上from admin
因为access数据库不支持select 1,2,3 这样的语句,他必须要跟表名

7.为什么cookie注入语句后面不用加注释
这个和SQL语句的组成部分有关,你注入的地方语句如果是
Select*from news where id=1 然后注入点在id=这里自然可以不加注释

8.为什么cookie注入可以绕过验证
因为早期网站防护只检测GET和POST传参,没有检测COOKIE

9.sqlmap如何进行cookie注入
Sqlmap可以提高检测等级来进行cookie注入(检测等级3及以上,要指定参数)
还可以抓包,在Cookie后面打个*就可以了

10.在无法查询系统自带库的时候如何获取表名
可以burp抓包爆破查询表名,因为表名的命名一般都有规则
and exist(select * from xxx)

11.cookie注入和显错注入,盲注这些有什么不同
我们课堂演示的Cookie注入属于显错注入,凡事都是讲究对应,例如大对小 胖对瘦 高对矮。Cookie注入的核心是传参方式,他对应的应该是POST注入之类的。显错注入的分类很明显核心看是否是显错,那么对应的就是盲注或者报错注入之类的。

12.什么是cookie
一种储存在用户本地上的数据,指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密)

13.如何去修改cookie
可以抓包修改(burp)
可以在浏览器里打开f12控制台通过JS修改,还可以在存储里修改cookie
可以使用插件修改(modify headers)

14.Cookie注入中可以用盲注的方式去判断表名吗
可以呀,不过能用显错就用显错,这里即使是用盲注还是得暴力猜解表名

15.Cookie注入只能在Access数据库上面使用吗?
并不是呀,基本上所有数据库都能呀,Cookie注入核心是传参方式,传参方式和数据库类型没有关系呀,是动态脚本语言干的事,这个锅数据库他不背。

16.Cookie注入仅仅在ASP站点有吗?
Cookie注入在PHP中也有,但是最多得还是ASP,因为PHP在5.4的版本$_REQUEST就不会再接受Cookie传参了。

17.为什么我写的语句放入Cookie无效,SQL注入无效
因为Cookie需要进行一次URL编码才会有效果

18.为什么我谷歌直接修改Cookie没有效果
建议使用火狐浏览器,不要使用谷歌

19.如果用Sqlmap直接跑Cookie注入
sqlmap.py -u "http://59.63.200.79:8004/shownews.asp" --cookie "id=171" --level 2
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值