header 头注入,是一种场景;跟以往的没区别,只是发生在 header 响应头;
有些时候,后台开发人员为了验证客户端头信息(比如常用的cookie验证),或者通过http header头信息获取客户端的一些信息,比如useragent、accept字段等等。会对客户端的http header信息进行获取并使用SQL进行处理,如果此时没有足够的安全考虑,则可能会导致基于http header的SQL Inject漏洞。
1. 点击提示,获得账号密码,登录账号。后台对HTTP头数据进行了获取,进行了相关的数据库操作。我们通过burp的数据包进行测试。
2. 将其发送到repeater。修改agent为单引号提交,查看结果。
3. 判断有sql注入漏洞。输入我们的payload
edge' or updatexml(1,concat(0x7e,database()),0) or '
4. 返回数据库名称 后面操作以此类推
访问页面,登陆 ;查看请求
当删除 user-Agent 的内容,改为 ' 时, 请求返回SQL请求报错信息; 由此可知这里做了请求数据的拼接;
使用字符型报错注入的payload
edge' or updatexml(1,concat(0x7e,database()),0) or'
得到 注入结果。
另外,从请求的信息看, 用户名、密码都放在了 cookie 中,也可以通过修改实现报错注入;