目录分隔符绕过

目录分隔符:/

赛题:r3CTF2025-web-Evalgelist

绕过方法一:PHP预定义变量

参考链接:
link:https://www.php.net/manual/en/dir.constants.php
link:https://www.w3cschool.cn/php/php-separator.html

DIRECTORY_SEPARATOR 是 PHP 中的一个预定义常量,其作用是返回当前操作系统所使用的目录分隔符

在windows系统中获取的是\,在Linux系统中获取的是/

1
2
3
<?php
echo DIRECTORY_SEPARATOR;
?>

image-20250725113239809

绕过方法二:PHP魔术常量

参考链接:
link:https://www.php.net/manual/en/language.constants.magic.php
link:https://www.runoob.com/php/php-magic-constant.html

__FILE__

__FILE__ 是一个PHP的一个魔术常量,表示当前脚本文件的完整路径(比如 /var/www/html/index.php)

1
2
3
<?php
echo __FILE__;
?>

image-20250725113459017

[__FILE__]:这里是把文件路径字符串放到数组的第一个元素位置

1
2
3
<?php
print_r([__FILE__]);
?>

image-20250725113804236

[__FILE__][0]:此操作是从数组中取出第一个元素,也就是得到原来的文件路径字符串

1
2
3
<?php
print_r([__FILE__][0]);
?>

image-20250725113835979

[__FILE__][0][0]:这一步是获取字符串的第一个字符

1
2
3
<?php
print_r([__FILE__][0][0]);
?>

image-20250725113925911

如果在Linux系统中,[__FILE__][0][0]获取到的就是/

__DIR__

__DIR__ 是一个PHP的魔术常量,表示当前脚本文件的目录(比如 /var/www/html)

__FILE__同理,在Linux系统中,[__DIR__][0][0]可获取到/

image-20250725115609601


目录分隔符绕过
https://yschen20.github.io/2025/07/25/目录分隔符绕过/
作者
Suzen
发布于
2025年7月25日
更新于
2025年7月25日
许可协议