新博客:https://wywwzjj.top/

原题网址

<?php
class Time{public $flag = xxxxx;public $truepassword = xxxxx;public $time;public $password;public function construct($tt, $pp) {$this->time = $tt;$this->password = $pp;}function __destruct(){if(!empty($this->password)) {if(strcmp($this->password,$this->truepassword)==0){echo "<h1>Welcome,you need to wait......<br>The flag will become soon....</h1><br>";if(!empty($this->time)){if(!is_numeric($this->time)){echo 'Sorry.<br>';show_source(__FILE__);}else if($this->time < 11 * 22 * 33 * 44 * 55 * 66){echo 'you need a bigger time.<br>';}else if($this->time > 66 * 55 * 44 * 33 * 23 * 11){echo 'you need a smaller time.<br>';}else{sleep((int)$this->time);var_dump($this->flag);}echo '<hr>';}else{echo '<h1>you have no time!!!!!</h1><br>';}}else{echo '<h1>Password is wrong............</h1><br>';}}else{echo "<h1>Please input password..........</h1><br>";}}function __wakeup(){echo 'hello hacker,I have changed your password and time, rua!';}
}if(isset($_GET['rua'])){//$test = new Time(1.275523920, array("a"));$rua = $_GET['rua'];@unserialize($rua);
}
else{echo "<h1>Please don't stop rua 233333</h1><br>";
}

稍稍记录一下,简单的反序列化。

何为序列化?

序列化对象 - 在会话中存放对象 ¶
所有 php 里面的值都可以使用函数 serialize() 来返回一个包含字节流的字符串来表示。unserialize() 函数能够重新把字符串变回 php 原来的值。 序列化一个对象将会保存对象的所有变量,但是不会保存对象的方法,只会保存类的名字。
为了能够unserialize()一个对象,这个对象的类必须已经定义过。如果序列化类A的一个对象,将会返回一个跟类A相关,而且包含了对象所有变量值的字符串。 如果要想在另外一个文件中解序列化一个对象,这个对象的类必须在解序列化之前定义,可以通过包含一个定义该类的文件或使用函数spl_autoload_register()来实现。

序列化字符串格式:变量类型:变量长度:变量内容
例如序列化对象字符串:

变量类型:类名长度:类名:属性数量:{属性类型:属性名长度:属性名;属性值类型:属性值长度:属性值内容}

PHP 中的魔术方法(Magic methods)

__construct(), __destruct(), __call(), __callStatic(), __get(), __set(), __isset(), __unset(),
__sleep(), __wakeup(), __toString(), __invoke(), __set_state(), __clone(),__debugInfo()

这里我们着重关注几个:

  • __construct():当对象创建(new)时会自动调用。但在unserialize()时是不会自动调用的。
  • __destruct():当对象被销毁时会自动调用。
  • __sleep():serialize() 会检查类中是否存在一个魔术方法 __sleep()。若存在,该方法会先被调用,再执行序列化操作
  • __wakeup():unserialize() 会检查是否存在一个 __wakeup() 方法。若存在,则先调用 __wakeup 方法,预先准备对象需要的资源。
  • __toString():用于一个类被当成字符串时应怎样回应。例如 echo $obj; 应该显示些什么。

PHP 有个 Bug,该漏洞可以概括为:

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

rua=O:4:"Time":3:{

注意上面的 3 ,是属性数量,本来2个就够了。

16进制 0x 开头在强制转换中出现问题,导致转换成0

payload 如下:

rua=O:4:%22Time%22:4:{s:4:%22time%22;s:10:%220x4c06f350%22;s:8:%22password%22;a:2:{i:0;s:1:%22a%22;i:1;s:1:%22b%22;}}

还有一种办法:科学计数法绕过 sleep()

rua=O:4:"Time":3:{s:4:"time";s:5:"1.3e9";

Please don't stop rua 233333相关推荐

  1. 开始我的Opengl学习之路(rua)

    这一系列的我的总结或者我的想法都是基于LearnOpengl来展开的,所以要学过那个教程之后还不懂可以来看下我的土话,我的想法可能会让你理解的轻松点. 搭TM的环境 前言: 关于之前的博客可能N久都未 ...

  2. redis rua解决库存问题_如何解决高并发下的库存安全问题,没你想得那么复杂(附源码)...

    一. 问题 不知道大家该开发中有没有遇到这样的一个问题,在电影院购票或者去网上买东西的时候,比方说当年哪吒大电影出来的时候,那抢票相当火爆啊,一票难求,那购票系统的后台是如何保证观众能买到自己喜欢的票 ...

  3. redis rua解决库存问题_【150期】面试官:Redis的各项功能解决了哪些问题?

    点击上方"Java面试题精选",关注公众号 面试刷图,查缺补漏 >>号外:往期面试题,10篇为一个单位归置到本公众号菜单栏->面试题,有需要的欢迎翻阅 阶段汇总集 ...

  4. redis rua解决库存问题_库存秒杀问题-redis解决方案- 接口限流

    /** * Created by PhpStorm. * redis 销量超卖秒杀解决方案 * redis 文档:http://doc.redisfans.com/ * ab -n 10000 -c ...

  5. rua噗实验(rip实验)

    实验要求: 一.设置路由器的ip地址和环回地址 如图 然后就是敲他!敲她!敲它! R1的 R2的 R3的 R4的 R5的 敲完收工! 二.宣告自己! 后面不敲了 自己想去!(进入rip v2 然后ne ...

  6. RUA!ERROR!

    Error不可怕解决就是啦 (づ ̄3 ̄)づ╭❤- Error 1 一个超级经典的错误! overflow 栈不空就遍历输出(但是仅遍历是不会导致栈空的所以是典型的while(true)error) p ...

  7. Gradle(古rua都)vs Maven(马文)

    #现在市面用到的项目构建工具有三种:Ant.Maven和Gradle:今天我们就来说说Maven和Gardle的一些区别? 现在说说为什么要使用项目构建工具? 在以前,这些操作都是需要我们手动去完成的 ...

  8. ZEND STUDIO 设置RUA AS WEB 方式

    wamp+ZendStudio  打造的PHP本地运行环境 zendStudio的工作路径 与wamp的WWW一致 workspace :D:\PHP\wamp\www Zend Studio有三种运 ...

  9. redis rua解决库存问题_Redis锁完美解决高并发秒杀问题

    场景:一家网上商城做商品限量秒杀. 1 单机环境下的锁 将商品的数量存到Redis中.每个用户抢购前都需要到Redis中查询商品数量(代替mysql数据库.不考虑事务),如果商品数量大于0,则证明商品 ...

最新文章

  1. 页面自动获取焦点影响页面切换效果_ReactIndex - 让文件夹index页面变得更有实用性 (替换传统Web服务器index页)...
  2. 网络负载均衡-负载均衡器
  3. Attach Volume 操作(Part I) - 每天5分钟玩转 OpenStack(53)
  4. python 网络聊天服务端
  5. 用BP人工神经网络识别手写数字——《Python也可以》之三
  6. sccm 2007 r2 step by step 之十五 补丁管理
  7. oracle中查找锁定状态的用户
  8. vue2.0桌面端框架_Vue PC端框架
  9. java 语法 —— final
  10. 55个高质量的Magento主题,助你构建电子商务站点
  11. 三星c5怎么改系统语言,三星c5驱动|三星c5手机驱动下载 v1.5.55.0 官方版 - 比克尔下载...
  12. Fiddler抓包没有网!
  13. bootstrap文件上传插件
  14. IC卡读写器的应用有哪些?
  15. 中国海洋科技发展迅速 海洋重器世界领先
  16. 栅栏CyclicBarrier
  17. 阿里云科技驱动“数字化转型”,助力中小企业发展“突围”
  18. word使用的奇技淫巧
  19. RAID——独立冗余磁盘阵列
  20. 量子信息技术(QIT)

热门文章

  1. 软件测评师知识点(2020.09.11)
  2. LabVIEW应用程序在Windows版本之间的字体变化
  3. BJ模拟:医院(支配树)
  4. 时间复杂度的计算详解
  5. 前端预览 PDF 文件几种方式汇总(使用PDFJS)
  6. 什么是软件过程?为什么要使用软件过程?如何评价一个好的软件过程?
  7. pointpillars--kitti训练
  8. Verilog HDL|实验项目六例
  9. mPEG-b-PAE/ mPEG-block-poly (β-amino esters)疏水性聚合物
  10. 计算机网络分布式处理的应用,谈计算机网络发展及其应用研究