HEADER
- HTTP消息头是指,在超文本传输协议( HTTP)的请求和响应消息中,协议头部分的那些组件
- HTTP Header内容的组织形式,大体分为Request和Response两部分
- HTTP消息头支持自定义
在Requests部分中,几个常见参数
常见参数 | 说明 |
---|---|
User-Agent | 记录用户所使用的浏览器信息 |
Accept | 指定客户端能够接收的内容类型 |
Accept-Language | 浏览器可接受的语言 |
Accept-Encoding | 指定浏览器可以支持的web服务器返回内容压缩编码类型 |
Content-Type | 请求的与实体对应的MIME信息 |
Content-Length | 请求的内容长度 |
Connection | 表示是否需要持久连接 |
Referer | 先前网页的地址,从哪个网站访问过来的 |
Cookie | HTTP请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器 |
Host | 指定请求的服务器的域名和端口号 |
X-Forwarded-For | 用来识别通过HTTP代理或负载均衡方式连接到Web服务器的客户端最原始的IP地址的HTTP请求头字段 |
注入场景
在一些网站中,用户登录后会记录用户的cookie、ip、UA、Referer等等
与数据库交互的位置就有可能存在注入点
User-Agent(UA)注入
1、进入靶场,发现是登录框,直接上万能密码 ‘ or 1 — q
2、得到警告,’ 被限制,观察登录框没有验证码之类的限制,用暴力破解
3.使用admin 密码为123456进行登录
4、登录成功,打开源码,发现后台记录了我的UA,尝试UA处有没有注入
5、抓包后在UA处使用\进行探测
6、报错错误 to use near ‘admin’)’
可能UA与用户名进行了绑定记录,记录是插入语句,进行闭合,构造payload:
‘ and updatexml(1,concat(0x7e,version()),1),’admin’) — q
7、payload成功,5.0以上版本,可以使用information_schema数据库,爆出当前数据库中的第一个表名
8、flag可能存在与flag_head表,故爆出flag_head表的字段名
9、得出 flag_h1字段名,接着得出flag_h1字段中的信息
Referer注入
1、直接使用admin 123456进行登录
2、打开源码,发现后台这次记录的是referer
3、抓包,对referer处 使用\进行探测
4、爆出错误,使用updatexml()函数进行报错注入,构造payload
5、爆出表名
6、爆出flag_head表的字段名
7、得出flag_h1字段的信息
IP注入
1、使用admin 123456进行登录
2、打开源码,发现这次记录的是IP地址
3、思考:在HTTP请求中没有发现含有IP地址的位置,但是在对HTTP数据包抓包后可以自行添加删除
X-Forwarded-For(XFF) 是用来识别通过HTTP代理或负载均衡方式连接到Web服务器的客户端最原始的IP地址的HTTP请求头字段,也称为透明代理
故可以自行添加 X-Forwarded-For到HTTP请求头中
4、直接构造payload
5、其他操作步骤与以上操作相同,故直接爆出结果
cookie注入或者其他参数注入类似操作
总结
大部分在情况下,只有在登录的情况下,后台才会记录用户的ip、Referer等信息,故在进行header头注入之前需要有正确的账号密码进行登录
注意:
报错注入函数除了updatexml(),extractvalue()函数也可以
extractvalue()函数语法:extractvalue(目标xml文档,xml路径)