详解PHP中pathinfo()函数导致的安全问题

网友投稿 345 2023-06-20


详解PHP中pathinfo()函数导致的安全问题

定义和用法

pathinfo() 函数以数组或字符串的形式返回关于文件路径的信息。

返回的数组元素如下:

[dirname]:返回文件路径中的目录部分

[basename]:返回文件路径中文件名的部分

[extension]:返回文件路径中文件的类型的部分

语法

pathinfo(path,options)

参数

path: 必需。规定要检查的路径。

options 可选。规定要返回的数组元素。默认是 all。

可能的值:

PATHINFO_DIRNAME - 只返回 dirname

PATHINFO_BASENAME - 只返回 basename

PATHINFO_EXTENSION - 只返回 extension

提示和注释

注释:如果不是请求所有的元素,则 pathinfo() 函数返回字符串。

php开启pathinfo 路由模式:pathinfo 模式 需要 php.ini 开启下面这个参数

cgi.fix_pathinfo=1

path_info模式:http://xxx.com/index.php/模块/方法

实例 1

print_r(pathinfo("/testweb/test.txt"));

?>

上面的代码将输出:

Array

(

[dirname] => /testweb

[basename] => test.txt

[extension] => txt

)

实例 2

var_dump(pathinfo("/testweb/test.txt",PATHINFO_DIRNAME));

var_dump(pathinfo("/testweb/test.txt",PATHINFO_BASENAME));

var_dump(pathinfo("/testweb/test.txt",PATHINFO_EXTENSION));

?>

上面的代码将输出:

string(8)"/testweb"

string(8)"test.txt"

string(3)"txt"

应用

目录不可控没有执行权限

pathinfo, 一种伪静态的用法,path_info 模式:http://xxx.com/index.php / 模块 / 方法:

sb.txt 被当成了模块,实际上请求的还是 6.php

一句话就执行了。

过 WAF 注入

本地安装 apache 安全狗

已知在开启 pathinfo 的情况下 (默认开启) 可以这样访问

常用注入语句被拦截

pathinfo 模式不拦截

总结

以上就是这篇文章的全部内容了,本文也算是抛砖引玉,更多用途请自测!希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

var_dump(pathinfo("/testweb/test.txt",PATHINFO_DIRNAME));

var_dump(pathinfo("/testweb/test.txt",PATHINFO_BASENAME));

var_dump(pathinfo("/testweb/test.txt",PATHINFO_EXTENSION));

?>

上面的代码将输出:

string(8)"/testweb"

string(8)"test.txt"

string(3)"txt"

应用

目录不可控没有执行权限

pathinfo, 一种伪静态的用法,path_info 模式:http://xxx.com/index.php / 模块 / 方法:

sb.txt 被当成了模块,实际上请求的还是 6.php

一句话就执行了。

过 WAF 注入

本地安装 apache 安全狗

已知在开启 pathinfo 的情况下 (默认开启) 可以这样访问

常用注入语句被拦截

pathinfo 模式不拦截

总结

以上就是这篇文章的全部内容了,本文也算是抛砖引玉,更多用途请自测!希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:微信小程序 数组中的push与concat的区别
下一篇:bootstrap table 表格中增加下拉菜单末行出现滚动条的快速解决方法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~