前言

由于环境问题,这题我按照之前的方法全部做出来了,一看别人的WP,是我没配好…

emmm???感觉回到了最初的起点,直接union注入就好了,没有过滤???

我转载别人的WP吧…

MYSQL天书

相关知识

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

img

服务器端有两个部分:第一部分为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的内容。

img

以上图片为大多数服务器对于参数解析的介绍。

此处我们想一个问题: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

首先先看下tomcat中的index.jsp文件

img

在apache的index.php中,sql语句为

sql="SELECT∗FROMusersWHEREid=′sql="SELECT∗FROMusersWHEREid=′id' LIMIT 0,1";

因此我们根据HPP的原理,我们直接payload:

http://127.0.0.1:8080/sqli-labs/Less-29/index.jsp?id=1&id=-2%27union%20select%201,user(),3--+

img

至于如何注入到其他的内容,只需要自己构造union后面的sql语句即可。

Less-30

Less-29差不多,双引号闭合

Less-31

和Less-29差不多,双引号和单括号闭合

说点什么
评论之后转圈圈也不用管,要批准之后才能显示,谢谢
支持Markdown语法
好耶,沙发还空着ヾ(≧▽≦*)o
Loading...