[极客大挑战 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.mzph.cn/bicheng/62614.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

毫米波雷达技术:(五)距离-多普勒图谱,以及 FMCW 信号帧结构的设计

(一) 距离-多普勒图谱&#xff08; R a n g e − D o p p l e r F F T Range-Doppler~FFT Range−Doppler FFT &#xff08; 2 D − F F T 2D-FFT 2D−FFT&#xff09;的结果&#xff09;: 1&#xff09;range-bins&#xff08;距离单元&#xff09;&#xff1a; 上述步骤②的…

Linux环境下配置neo4j图数据库

1.下载安装包 openjdk-11.0.1_linux-x64_bin.tar.gz neo4j-community-4.2.19-unix.tar.gz 2.之前配置好的配置文件 neo4j.conf 3.安装 3.1-jdk11的安装&#xff08;jdk1.8不够用&#xff09; 解压缩 tar -zxvf openjdk-11.0.1_linux-x64_bin.tar.gz修改系统环境变量 打开pro…

Mybatis:CRUD数据操作之多条件查询及动态SQL

Mybatis基础环境准备请看&#xff1a;Mybatis基础环境准备 本篇讲解Mybati数据CRUD数据操作之多条件查询 1&#xff0c;编写接口方法 在 com.itheima.mapper 包写创建名为 BrandMapper 的接口。在 BrandMapper 接口中定义多条件查询的方法。 而该功能有三个参数&#xff0c;…

Day3 洛谷 1161+1179+1200+1304

零基础洛谷刷题记录 Day1 2024.11.18 Day2 2024.11.25 Day3 2024.11.26 文章目录 零基础洛谷刷题记录1161&#xff1a;题目描述1161&#xff1a;解题代码1161&#xff1a;学习成果1179&#xff1a;题目描述&#xff08;成功写出&#xff09;1179&#xff1a;解题代码1179&…

18:(标准库)DMA二:DMA+串口收发数据

DMA串口收发数据 1、DMA串口发送数据2、DMA中断串口接收定长数据包3、串口空闲中断DMA接收不定长数据包4、串口空闲中断DMA接收不定长数据包DMA发送数据包 1、DMA串口发送数据 当串口的波特率大于115200时&#xff0c;可以通过DMA1进行数据搬运&#xff0c;以防止数据的丢失。如…

【Flink-scala】DataStream编程模型之窗口计算-触发器-驱逐器

DataStream API编程模型 1.【Flink-Scala】DataStream编程模型之数据源、数据转换、数据输出 2.【Flink-scala】DataStream编程模型之 窗口的划分-时间概念-窗口计算程序 文章目录 DataStream API编程模型前言1.触发器1.1 代码示例 2.驱逐器2.1 代码示例 总结 前言 本小节我想…

MATLAB —— 机械臂工作空间,可达性分析

系列文章目录 前言 本示例展示了如何使用可操作性指数对不同类型的机械手进行工作空间分析。工作空间分析是一种有用的工具,可用于确定机器人工作空间中最容易改变末端效应器位置和方向的区域。本示例的重点是利用不同的可操控性指数类型来分析各种机械手的工作空间。了解工作…

提升异步编程性能:使用 uvloop 加速你的 Python 应用

提升异步编程性能&#xff1a;使用 uvloop 加速你的 Python 应用 引言什么是 uvloop&#xff1f;安装 uvloop使用 uvloop示例代码代码解释性能对比性能测试结果 总结参考资料 引言 在现代的 Python 异步编程中&#xff0c;asyncio 是一个非常强大的工具&#xff0c;它允许我们…

Python 小高考篇(8)拓展

目录 列表读取内容修改内容for 循环遍历列表下标越界 ASCII码和字符的相互转换导入库进制转换结尾 本文由Jzwalliser原创&#xff0c;发布在CSDN平台上&#xff0c;遵循CC 4.0 BY-SA协议。 因此&#xff0c;若需转载/引用本文&#xff0c;请注明作者并附原文链接&#xff0c;且…

11.21c++中的函数

练习&#xff1a; 编写mystring类&#xff1a;拥有以下功能&#xff1a; 1.带参、无参构造函数&#xff0c;拷贝构造函数&#xff0c;析构函数 2.编写 append(const mystring r) 为当前字符串尾部&#xff0c;拼接新的字符串r 3.编写 isEqual(const mystring r) 判断当前字符串…

windbg使用定位内核内存泄露

零 打开驱动测试测试工具 verifier /standard /driver fileflt.sys 然后重启电脑等待生效 一 设置 Windows 内核调试的符号路径和模块加载 1. 设置微软符号服务器路径&#xff1a; 在 WinDbg 中&#xff0c;可以通过以下命令设置符号路径&#xff1a; .sympath srv*c:\s…

vue3使用monaco编辑器(VSCode网页版)

vue3使用monaco编辑器&#xff08;VSCode网页版&#xff09; 文章说明参考文章核心代码效果展示实践说明源码下载 文章说明 一直在找网页版的编辑器&#xff0c;网页版的VSCode功能很强大&#xff0c;这个monaco就是VSCode样式的编辑器&#xff0c;功能很强大&#xff0c;可以直…

Vue.js 组件开发进阶:构建可扩展的组件库

在构建大型应用或企业级前端项目时&#xff0c;往往需要将多个组件模块化、封装成可复用的组件库。这种组件库不仅能够大幅提升开发效率&#xff0c;还能确保一致的用户体验和易于维护的代码结构。Vue.js 作为一个渐进式的前端框架&#xff0c;其灵活的组件化设计使得开发高质量…

UWB数字钥匙安全测距和场景应用

1. CCC数字钥匙 2021年7月CCC将UWB定义为第三代数字钥匙的核心技术&#xff0c;并发布CCC R3&#xff08;第三代数字钥匙&#xff09;规范。 CCC R3是基于NFC/BLE/UWB作为基础的无线电技术的使用&#xff0c;该系统采用非对称密码技术对车辆和设备进行相互签名认证&#xff0…

SpringBoot小知识(2):日志

日志是开发项目中非常重要的一个环节&#xff0c;它是程序员在检查程序运行的手段之一。 1.日志的基础操作 1.1 日志的作用 编程期调试代码运营期记录信息&#xff1a; * 记录日常运营重要信息(峰值流量、平均响应时长……) * 记录应用报错信息(错误堆栈) * 记录运维过程数据(…

SAP Native SQL 的简单说明

Open SQL访问数据字典中声明的数据库表&#xff0c;不区分数据库类型&#xff0c;执行时会自动转换为对应的语句&#xff0c;且可以使用本地缓存。Native SQL使用特定于数据库的SQL语句,但是可以访问比Open SQL 更多的表&#xff0c;更多的操作&#xff0c;缺点也很明显&#x…

2024前端面试经验分享

一、简历 1、整理步骤 把自己过去做过的有亮点的事情整理一遍。项目经历&#xff0c;通过 star 法则来做&#xff0c;不赘述&#xff0c;网上很多人讲。需要突出的亮点见下面。 2、前端开发常见突出亮点&#xff1a; 性能优化代码优化组件封装框架原理项目推进、协调能力技…

IEEE 802.11s wifi mesh网络

IEEE 802.11s 是对 IEEE 802.11 标准的扩展&#xff0c;允许多个无线节点相互连接&#xff0c;而无需在它们之间有接入点&#xff08;AP&#xff09;。例如&#xff0c;如果您家里有一个 AP&#xff0c;您想将文件复制到另一台连接到相同 AP 的笔记本电脑 B&#xff08;与您的笔…

Git中HEAD、工作树和索引的区别

在Git版本控制系统中&#xff0c;HEAD、工作树&#xff08;Working Tree&#xff09;和索引&#xff08;Index&#xff09;是三个非常重要的概念&#xff0c;它们分别代表了不同的状态或区域&#xff0c;下面我将对这三个概念进行详细的解释。 HEAD 定义&#xff1a;HEAD是一…

ARP欺骗-监控网络

kali: 使用arp-scan -l 查看同个局域网 windows arp -a 查看地址的物理地址 192.168.21.2 对应的是00-50-56-f5-d5-f0 攻击利用: 我们要让目标ip的流量经过我的网卡,从网关出去 使用的开启 echo 1 > /proc/sys/net/ipv4/ip_forward 当为0时&#xff0c;我们不转发&…