sql注入


**

第29关(基于’的http请求的参数污染注入 )

**
在这里插入图片描述
所以本关真正想考察的是http参数污染来进行注入,下面简单介绍一下http参数污染

http参数污染:jsp/tomcat使用getgetParameter(“id”)获取到的是第一个值,php/apache使用$_GET[“id”]获取的是第二个值,那么第一个id纯数字,第二个id的值

因此 29、30、31关卡需要先搭建jsp环境

jspstudy下载连接:Windows版phpstudy下载 - 小皮面板(phpstudy),根据提示进行安装即可,安装完成后在其他选项菜单中点击站点域名管理,然后进行保存并生成配置文件(这里注意下目录,如果错误导致服务启动不了,则去对应服务中的配置文件中修改下目录即可),注意修改apache、mysql、tomcat的端口,不要与phpstudy的端口冲突,这三个关卡需要同时启动jspstudy和phpstudy

环境搭建完成后,就可以注入了:

payload:

?id=1&id=0’ union select 1,database(),3 --+
在这里插入图片描述
**

第32关(宽字节注入)

**
到了本关就来到了一个新的注入类型了,宽字节注入,那么先来简单介绍一下宽字节注入:

一个gbk编码汉字,占用2个字节。

一个utf-8编码的汉字,占用3个字节。

addslashes函数的作用就是让’变成’,让引号变得不再是原本的“单引号”,没有了之前的语义,而是变成了一个字符。那么我们现在要做的就是想办法将’前面的\给它去除掉:
既然这函数给’前面加了一个\那么是不是想办法给\前面再加一个\(或单数个即可),然后变成了\',这样\就又被转义了,这样就成功的逃出了addslashes的限制

查看一下后端代码,发现对’和/都进行了过滤,因此我们就无法闭合,现在就可以使用宽字节注入了:

function check_addslashes($string)
{
$string = preg_replace(‘/’. preg_quote(‘\’) .‘/’, “\\\”, $string); //escape any backslash
$string = preg_replace(‘/’/i’, ‘\’‘, $string); //escape single quote with a backslash
$string = preg_replace(’/“/', “\””, $string); //escape double quote with a backslash

return $string;

}
在这里插入图片描述
可以看到成功的报错了,这是因为编码为gbk然后我们输入的%df+%27导致%df%27变成了運)

既然由报错,下面就可以尝试注入出数据了:
在这里插入图片描述
**

第34关(POST型宽字节)

**
可以看到本关变成了POST方式提交了,看看后端代码:

发现后端代码还是对输入的用户名和密码中额度字符进行了编码:

    $uname = addslashes($uname1);
    $passwd= addslashes($passwd1);

那么就还是可以使用宽字节来进行注入,因为这一关是POST提交,因此这里使用Burpsuite抓包来注入:
**

第36关(宽字节注入(Bypass MySQL Real Escape String))

**
查看后端代码发现使用了mysql_real_escape_string函数对输入的字符进行过滤:

$string= mysql_real_escape_string($string);    

那么我们可以来试试是否可以使用宽字节来注入:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值