PHP原生类及其利用

目录

前言:

查找文件的原生类:

DirectoryIterator:

FilesystemIterator:

GlobIterator:

读取文件的原生类:

SplFileObject:

总结:


前言:

前几天打CTF,遇见了一道这样的题

<?php 

$a = $_GET['a']; 

$b = $_GET['b']; 

echo new $a($b); 

?>

显然,题中没有给出任何可利用的class,这便要利用到PHP中的原生类,顾名思义,就是PHP中自带的类

查找文件的原生类:

DirectoryIterator:

该类可配合glob伪协议查找文件,它会创建一个指定目录的迭代器,当遇到echo输出时会触发Directorylterator中的__toString()方法,输出指定目录里面经过排序之后的第一个文件名

例如:

Directorylterator(glob://*flag*)

FilesystemIterator:

这个继承了DirectoryIterator类,利用方法同上

GlobIterator:

通过名字可以看出来,这个具有global性质,可以搜索全局的文件,因此无需借助glob://伪协议

可直接使用:

 GlobIterator(*flag*)

读取文件的原生类:

SplFileObject:

当我们通过可查找文件的原生类查找到敏感文件时可用此类,来读取敏感文件内的内容

该类同样通过echo触发SplFileObject中的__toString()方法。(该类不支持通配符,所以必须先获取到完整文件名称才行)

例如:

SplFileObject(flag.php)

但是直接加入文件的的话,它只会返回文件的第一行字符,如果想要返回文件全部内容的话须借助php://filter伪协议

总结:

打CTF还是要多学多练,在题目中所碰到的知识点千奇百怪,还是得多积累,坚持一天一道CTF题

更多相关文章请查看作者博客icon-default.png?t=N2N8http://blog.byzhb.top/

猜你喜欢

转载自blog.csdn.net/Elite__zhb/article/details/129739647