您当前的位置: 首页 > 

yu22x

暂无认证

  • 2浏览

    0关注

    109博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

CTFSHOW 反序列化篇

yu22x 发布时间:2020-12-11 19:23:05 ,浏览量:2

文章目录
    • web254
    • web255
    • web256
    • web257
    • web258
    • web259
    • web260
    • web261
    • web262
    • web263
    • web264
    • web265
    • web266
    • web267
    • web268
    • web269
    • web 270
    • web271
    • web 272、273
    • web274
    • web275
    • web 276
    • web277 278
笔者太菜了,没解出来261 T_T

web254

没搞懂和反序列化有啥关系,直接传username=xxxxxx&password=xxxxxx出flag

web255

请求包内容如下 在这里插入图片描述 首先get传的username和password都是xxxxxx 因为源码里面

$user = unserialize($_COOKIE['user']);
$user->login($username,$password);

就是是说我们需要让反序列后的结果是ctfShowUser的实例化对象。又因为只有$this->isVip是true才能是flag,所以反序列化的内容为


直接get传vip=xxx就可以了,最后访问/flag.txt应该就能拿到flag了。

web260

题目意思就是你序列化出来的东西需要包含字符串ctfshow_i_love_36D, 那我们直接传ctfhsow=ctfshow_i_love_36D就可以了。

web261

打下来和redis好像没什么关系.

如果类中同时定义了 __unserialize() 和 __wakeup() 两个魔术方法,
则只有 __unserialize() 方法会生效,__wakeup() 方法会被忽略。

当反序列化时会进入__unserialize中,而且也没有什么方法可以进入到__invoke中。所以直接就朝着写文件搞就可以了。

只要满足code==0x36d(877)就可以了。
而code是username和password拼接出来的。
所以只要username=877.php password=shell就可以了。
877.php==877是成立的(弱类型比较)

payload

';
echo base64_encode('|'.serialize($a));

首先修改cookie后访问index.php,接着访问check.php即可生成木马文件。比如我这个会生成log-b.php。

web264

具体的可以参考下web262,但这个题略微恶心一些,用的是$_SESSION,原来是$_COOKIE,所以我们不能直接修改cookie了。 直接把原来262的值传过去就可以了

f=1&m=1&t=1fuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuck%22;s:5:%22token%22;s:5:%22admin%22;}
if(isset($_COOKIE['msg'])){
xxxx
    }

所以还得随便传个cookie msg=1 ,访问message.php就行了

web265

考察php按地址传参

$a='123';
$b=&$a;
$b=1;
echo $a;

大家可以试下这段代码,会发现a的值会跟着b一起改变。所以我们只需要让token按地址传给passowrd就可以了。 payload:


web268

poc


web269

poc


web 270

用法 在这里插入图片描述

web275

__destruct当对象被销毁时调用,所以我们不需要用到反序列化函数。那么只要$this->evilfile是true就可以执行系统命令了。最后在拼接一下命令 payload

?fn=;cat f*
data: flag=123
web 276

在上个题的基础上增了了 判断$this->admin所以真的需要我们去通过反序列化修改admin的值了。因为题目中没有反序列化函数,所以需要通过其他方式。 因为题目中有写文件的函数,所以可以通过file_put_contents写phar文件,然后再通过file_put_contents触发phar反序列化。当然我们得在删除文件前执行完这两个操作,所以需要用到条件竞争。 生成phar文件

            
关注
打赏
1617522777
查看更多评论
0.0574s