在研究漏洞过程中发现了一个有趣的玩意
众所周知,URL中的空格往往会被编码成%20
如:
GET /url end_url HTTP/1.1
会被解析为:
GET /url%20end_url HTTP/1.1
那么,假设我们使用 burp 直接发送空格呢?

随手复制并构建的包,不需要关注其它内容哈
很明显,是直接发送出去的。下面测试一下服务器能否正常识别,编写PHP代码如下:
<?php
// 获取url参数
$param = $_GET['param'];
// 根据参数值返回不同的结果
if ($param == 'value1') {
echo '这是参数为value1时返回的结果';
} elseif ($param == ' value2') {
echo '这是参数为value2时返回的结果';
} else {
echo '未知参数';
}
?>
注意观察,' value2'前面是带有空格的。
发送数据包观察:

phpstudy 的 WNMP 环境可以正常识别
重点来了:我发现某些设备中,http 数据包如果没有按照标准来,可能会出现无法解析的问题。这就是个典型例子,经过测试。出现了能识别出 HTTP 协议,但无法解析的情况。直接连告警都不会触发。剩下不多说了。