什么是http header注入?
有些时候,后台开发人员为了验证客户端头信息(比如常用的cookie验证
或者通过http header头信息获取客户端的一些信息,比如useragent、accept字段等等
会对客户端的http header信息进行获取并使用SQL进行处理,如果此时没有足够的安全考虑
则可能会导致基于http header的SQL Inject漏洞
练习部分
打开pikachu靶场的http header的部分。输入提示的admin,123456的登录信息。可见页面弹出了我们的登录ip地址,登录设备,登录地址,端口。
打开burpsite抓包查看有两个提交的请求,一个是POST请求提交账号与密码,一个是get请求提交header头文件。选择把get请求发送到repeater。
user-agent方法
可以看到useragent就是刚刚在主页面显示的登录设备信息,我们把原信息删除掉改成我们的攻击代码。因为此处是把原来没有的新信息添加到数据库中然后输出出来,所以这里我们选择insert中用过的攻击代码
' or updatexml(1,concat(0x7e,database()),0) or '
复制到repeater替换后发送请求,可见响应中出现了数据库名,实现了我们的攻击流程。
cookie方法
在get请求中还有一个cookie值,如果该网站利用cookie,把cookie输入到了数据库做某种验证,那么我们也可以通过cookie实现sql注入。
我们在cookie的ant[uname]中输入一个引号干扰正常的sql语句,点击发送后查看响应发现网页出现了报错,可知该网页把cookie输入到了数据库中。
于是我们构建攻击代码
' or updatexml(1,concat(0x7e,database()),0) or '
我们把攻击代码补在admin后,发送请求,在响应中也发现成功利用报错注入输出了数据库名称,实现了我们的攻击流程。