示例1
以下代码采用不受信任的输入,并使用正则表达式从输入中过滤“ ../”。然后,它将此结果附加到/home/user/directory,并尝试在最终结果路径中读取文件。
我的$ username = getUntrustedInput();
$ username = 〜s/\。\。\/////////
我的$ filename =“/home/home/user/”。$ username;
ReadAndSendFile($ filename);
由于正则表达式没有 /G全局匹配修饰符,因此它仅删除了“ ../”的第一个实例。因此,输入值例如:
../../../../../etc/passwd
将有第一个“ ../”剥离,导致:
然后将此值与/home/user/underory串联:
/home/user/../../../etc/passwd
一旦操作系统解决了路径名中的../序列,这会导致/etc/passWD文件检索。这导致相对路径遍历(CWE-23)。