一、什么是Cookie?
Cookie就是服务器用来识别用户信息的一串字符,Cookie由服务器提供给浏览器,然后由浏览器进行保存,在每次对网站进行访问时,会在请求头中包含Cookie的参数,让服务器对自身身份进行识别。
二、Cookie注入?
Cookie注入就是通过修改cookie的值达到注入的目的。
三、为什么会产生Cookie注入
是因为网站带代码中除了get、post传参,还接受了cookie传参,并带入了数据库,如果对cookie没有进行检测的话,就可能造成cookie注入。
如php中:$_REQUEST['a']
既可以接受GET、POST传参,还可以接受COOKIE传参。
asp中:
四、靶场实操

进入界面是这样的。随便逛逛。

这个靶场对GET、POST传参进行了限制

那就是尝试cookie注入

页面刷新之后发现确实发生了变化。说明cookie传参成功,那测试一下是否可以注入

页面显示正常


页面出错了,说明and 1=2
注入成功了。
这里使用的是 exists()函数来猜测表名

回显正常,说明存在这个admin表。也可以BURP进行对admin
位置进行爆破,猜解其他表
然后猜解字段。

有username
字段

有password
字段
也可以进行爆破字段,即对列名对应的位置进行爆破


order by
进行判断字段数,10回显正常,11回显错误,说明存在10列
union select
判断回显位

可以看到,2,3,7,8,9都是回显位置
查询admin
表中的username
和password
字段值


查到管理员用户的账号和密码(密码进行了md5加密,解码就好了)
admin
、welcome


成功进入后台!
总结
- access数据库,没有数据库的概念,所有的表都在一个数据库下。
- access数据库中没有注释符,即
-- 空格
和#
在access数据库中都不能使用。 - access中的系统表是
msysobjects
,因此
and exists(select * from msysobjects) 这个语句可以判断是不是Access数据库
- access中常用的函数和语句
select len(string) 返回字符串的长度
select asc("a") 返回字符的ascii值
select mid(string,start,length) 查询给定字符串从指定索引开始的长度
top n 查询前n条数据
Comments NOTHING