sqli-labs Less-29、30、31(sqli-labs闯关指南 29、30、31)—服务器(两层)架构

目录

服务器(两层)架构介绍

Less-29

Less-30

 Less-31


服务器(两层)架构介绍

首先介绍一下 29,30,31 这三关的基本情况:

sqli-labs Less-29、30、31(sqli-labs闯关指南 29、30、31)—服务器(两层)架构_第1张图片

        服务器端有两个部分:第一部分为 tomcat 为引擎的 jsp 型服务器,第二部分为 apache为引擎的 php 服务器,真正提供 web 服务的是 php 服务器。工作流程为:client 访问服务器,能直接访问到 tomcat 服务器,然后 tomcat 服务器再向 apache 服务器请求数据。数据返回路径则相反。
        此处简单介绍一下相关环境的搭建。环境为 ubuntu14.04。此处以我搭建的环境为例,我们需要下载三个东西:tomcat 服务器、jdk、mysql-connector-java.分别安装,此处要注意jdk 安装后要 export环境变量,mysql-connector-java 需要将 jar文件复制到 jdk 的相关目录中。
        接下来将 tomcat-files.zip 解压到 tomcat 服务器 webapp/ROOT 目录下,此处需要说明的是需要修改源代码中正确的路径和 mysql 用户名密码。到这里我们就可以正常访问 29-32 关了。
        重点:index.php?id=1&id=2,你猜猜到底是显示 id=1 的数据还是显示 id=2 的?
        Explain:apache(php)解析最后一个参数,即显示 id=2 的内容。Tomcat(jsp)解析第一个参数,即显示 id=1 的内容。

sqli-labs Less-29、30、31(sqli-labs闯关指南 29、30、31)—服务器(两层)架构_第2张图片

         以上图片为大多数服务器对于参数解析的介绍。
        此处我们想一个问题:index.jsp?id=1&id=2 请求,针对第一张图中的服务器配置情况,客户端请求首先过 tomcat,tomcat 解析第一个参数,接下来 tomcat 去请求 apache(php)服务器,apache 解析最后一个参数。那最终返回客户端的应该是哪个参数?
        Answer:此处应该是 id=2 的内容,应为时间上提供服务的是 apache(php)服务器,返回的数据也应该是 apache 处理的数据。而在我们实际应用中,也是有两层服务器的情况,那为什么要这么做?是因为我们往往在 tomcat 服务器处做数据过滤和处理,功能类似为一个 WAF。而正因为解析参数的不同,我们此处可以利用该原理绕过 WAF 的检测。该用法就是 HPP(HTTP Parameter Pollution),http 参数污染攻击的一个应用。HPP 可对服务器和客户端都能够造成一定的威胁。

Less-29

sqli-labs Less-29、30、31(sqli-labs闯关指南 29、30、31)—服务器(两层)架构_第3张图片

第29关被称为世界上最好的WAF,但我们直接开始做的时候,发现它与第1关一样,这显然是不对的。这一次29-32关在其他地方,同时还需要配置下环境 。

配置jspstudy环境

sqli-labs-master文件夹下面还有tomcat文件,这才是真正的关卡,里面的jspstudy需要搭建环境jspstudy

sqli-labs Less-29、30、31(sqli-labs闯关指南 29、30、31)—服务器(两层)架构_第4张图片

jspstudy的下载包:Windows版phpstudy下载 - 小皮面板(phpstudy) 

sqli-labs Less-29、30、31(sqli-labs闯关指南 29、30、31)—服务器(两层)架构_第5张图片

 接着我们将之前解压的tomcat文件中的sqli-labs文件复制到WWW文件中 

sqli-labs Less-29、30、31(sqli-labs闯关指南 29、30、31)—服务器(两层)架构_第6张图片

sqli-labs Less-29、30、31(sqli-labs闯关指南 29、30、31)—服务器(两层)架构_第7张图片

打开其中的Less-29,右击用Notepad打开index.jsp,我们看到选中的地方,括号里的网址所指向的目录,这是将要打开的原来65关Less-29的index.php所在的位置,根据自己的情况来修改,我这里的地址如图所示:

sqli-labs Less-29、30、31(sqli-labs闯关指南 29、30、31)—服务器(两层)架构_第8张图片 我们接下来需要修改Jsp Study的端口号,因为php Study默认端口为80,不修改可能会因为端口占用而无法启动,按照下图操作即可:

sqli-labs Less-29、30、31(sqli-labs闯关指南 29、30、31)—服务器(两层)架构_第9张图片

通过火狐登陆,输入网址加上:8080是jsp,此时页面还有点异常 :

sqli-labs Less-29、30、31(sqli-labs闯关指南 29、30、31)—服务器(两层)架构_第10张图片

 我们需要在后面加上index.jsp?id=1的时候,返回正常了.

sqli-labs Less-29、30、31(sqli-labs闯关指南 29、30、31)—服务器(两层)架构_第11张图片

开始正式的29关

        参数污染:jsp/tomcat使用getgetParameter("id")获取到的是第一个值,php/apache使用$_GET["id"]获取的是第二个值,那么第一个id纯数字,第二个id的值,也就是,需要注入两个参数,第二个参数才是可以实现sql注入的。

        使用两个id的命令:index.jsp?id=1&id=2请求,服务器配置情况,客户端请求首先过tomcat,tomcat解析第一个参数,接下来tomcat去请求apache(php)服务器,apache解析最后一个参数。那最终返回客户端的应该是id=2的参数。

        即jsp/tomcat使用getParameter("id")获取到的是第一个值,php/apache使用$_GET["id"]获取的是第二个值,那么第一个id纯数字,第二个id的值我们往往在tomcat服务器处做数据过滤和处理,功能类似为一个WAF。而正因为解析参数的不同,我们此处可以利用该原理绕过WAF的检测。该用法就是HPP(HTTP Parameter Pollution),http参数污染攻击的一个应用。HPP可对服务器和客户端都能够造成一定的威胁。

        apache 解析后面的参数 http://127.0.0.1:8080/sqli-labs/Less-29/index.jsp?id=1&id=2'--+

sqli-labs Less-29、30、31(sqli-labs闯关指南 29、30、31)—服务器(两层)架构_第12张图片

        接下来我们在后面的id进行注入,语句为联合查询的语句,请参照第一关的语句,这里只举第一句为例:http://127.0.0.1:8080/sqli-labs/Less-29/index.jsp?id=1&id=-2'union select 1,2,group_concat(schema_name)from information_schema.schemata --+

sqli-labs Less-29、30、31(sqli-labs闯关指南 29、30、31)—服务器(两层)架构_第13张图片

 ps:安装jsp并运行这个我也没有搞定,由于时间比较仓促,可以参考一下这个视频:

sql注入之sqli-labs系列教程(less29-31)_哔哩哔哩_bilibili

Less-30

Less-30 与 less-29 原理是一致的,我们可以看到 less-30 的 sql 语句为:

sqli-labs Less-29、30、31(sqli-labs闯关指南 29、30、31)—服务器(两层)架构_第14张图片

这一关的包裹形式变为了双引号,其他地方均与29关相同,此处省略: 

sqli-labs Less-29、30、31(sqli-labs闯关指南 29、30、31)—服务器(两层)架构_第15张图片

 Less-31

sqli-labs Less-29、30、31(sqli-labs闯关指南 29、30、31)—服务器(两层)架构_第16张图片

此处包裹变为“),其他均与29,30关相同,不再赘述

http://127.0.0.1:8080/sqli-labs/Less-31/index.jsp?id=1&id=-2") union select 1,2,3--+

sqli-labs Less-29、30、31(sqli-labs闯关指南 29、30、31)—服务器(两层)架构_第17张图片

        参考网址:sqli-labs Less29-Less31 - 骑着七彩祥云的少年 - 博客园

        参考视频:sql注入之sqli-labs系列教程(less29-31)_哔哩哔哩_bilibili

        总结:从以上三关中,我们主要学习到的是不同服务器对于参数的不同处理,HPP 的应用有很多,不仅仅是我们上述列出过 WAF 一个方面,还有可以执行重复操作,可以执行非法操作等。同时针对 WAF 的绕过,我们这里也仅仅是抛砖引玉,后续的很多的有关 HPP 的方法需要共同去研究。这也是一个新的方向。

        个人感觉还是参考视频比较靠谱,我这边环境问题,没有搞成功。

你可能感兴趣的:(sqli-lab靶场,less,服务器,架构)