关于代码及渗透测试中.%2e的含义、作用及原理的技术问询
关于.%2e和目录遍历命令的解析
一、.%2e到底是什么?
.%2e是**..(上级目录符号)的URL编码变形写法**:
- 基础逻辑:ASCII字符里的
.(点)对应的URL编码是%2e,把..拆成一个明文点加一个编码后的点,就得到.%2e——服务器解码后它就是标准的..。 - 这么写的目的很直接:很多Web应用会直接拦截
../这种明显的目录遍历字符,但对URL编码后的内容没做解码校验,或者只做了一次解码,用这种变形就能绕开防护规则。
二、.%2e的作用
核心就是绕过Web应用的目录遍历防护,实现越权访问服务器资源:
- 正常情况下,Web服务只会允许访问指定目录(比如网站根目录)内的文件,但
..可以让请求跳转到上级目录,访问本不该被暴露的文件/目录。 .%2e是..的「伪装版」,属于路径遍历攻击里的常见绕过技巧,专门针对那些只检测明文../的防护机制。
三、那条curl命令的工作原理
先看命令:curl localhost:80/cgi-bin/.%2e/.%2e/.%2e/.%2e/TargetDirectoryPath
一步步拆解运作逻辑:
- URL解码阶段:服务器收到请求后,会先对URL里的编码部分解码,把每个
.%2e转换成..。解码后的路径变成:/cgi-bin/../../../../TargetDirectoryPath。 - 路径解析阶段:服务器按照文件系统规则解析这个路径:
- 假设
cgi-bin是网站根目录下的子目录,第一个../会从cgi-bin跳回网站根目录; - 每多一个
../就再往上跳一级,四次跳转后,会直接跳出网站根目录的限制(可能到达服务器的文件系统根目录,具体取决于服务器配置);
- 假设
- 访问目标资源:最后拼接上
TargetDirectoryPath,就直接访问到了目标目录的内容,完全绕开了Web服务原本允许的访问路径。
简单说,这条命令就是用编码变形的..多次跳级,突破Web服务的目录限制,去访问原本不可达的目录。
内容的提问来源于stack exchange,提问作者Rakkounen
相关产品推荐
相关产品推荐

