题目如下:
提示特殊的注入,头部注入,猜测和第一题应该有点关联,应该是SQL注入问题,点进去之后只有商品信息,别的什么都没有,f12看看,也没有什么信息:
竟然说了是注入,观察,也没有存在gid=1这种信息(存在的话可以试着使用单引号“ ' ”进行注入,看看有没有提示数据库语法错误)。 直接用sqlmap跑一下,也没有数据库名称。
百度,参考了一下:
https://www.cnblogs.com/PegasusLife/p/10886420.html
根据提示头注入有三个注入点:
X-Forwarded-For:简称XFF头,代表客户端,就是HTTP的请求端真是的IP(就是本机的IP),只有通过了HTTP代理或者负载均衡服务器时才会添加该项。标准格式:X-Forward-For:client1(客户端ip),proxy1(代理或负载均衡服务器ip),proxyn(经过的代理或均衡服务器的ip,因为可能会经过很多个)
User-Agent:中文名是用户代理,是HTTP协议的一部分,属于头域组成部分。是一个特殊的字符串头,可以向访问网站提供所使用的的浏览器类型及版本,操作系统及版本,浏览器内核等信息。可以利用这些信息进行伪装。
Referer:是header的一部分信息,当浏览器向Web服务器发送请求的时候,一般会带上这个信息,告诉服务器自己从哪里来,服务器可以通过这个信息进行一些处理。这个信息可以伪造,所以可以用于欺骗。
好,分别进行测试:
使用brupsuite抓取该页面的包:
将页面的信息发送到Repeater,之后对User-Agent进行测试:
将User-Agent的值修改为1',发送:
页面并没有发生变化,应该不是这个注入,测试Referer:
也是和原页面一样,证明不是这个注入,那么继续试试XFF:
出现了SQL报错,证明存在XFF可注入点,之后就是尝试SQL语句了....尝试查表:
union select 1,2,user(),database()(查用户名和表名)
爆出了数据库名:pentesterlab
参考了下获取表的语句:
https://blog.csdn.net/weixin_33779515/article/details/87725501
按照上述的一些语句构造查找不出来表名,也尝试过别的语句,没办法,尝试直接获取信息:
union select 1,2,(等)flag from flag,之后表名flag就 出来了,上面那个连接也可以作为SQL构造的一个参考。
在尝试到3的时候,出来了:
通过本题也是学习到了使用brupsuite修改信息发送测试,再判断可否注入,还有一些头注入的知识。