序列化与反序列化web题型

unserialize3
在这里插入图片描述
这里有个_wakeup函数漏洞,下面考虑如何绕过
在这里插入图片描述
大括号前面的1 就是xctf的属性变量的个数,下面将它修改为2,code参数提交

在这里插入图片描述
总结: 找到需要提交的参数,序列化的一些知识,基本代码的编写这道题的目的是绕过wakeup函数

实验吧(天网管理系统)
在这里插入图片描述
一开始打算用md5在搜索框绕过的,结果不成功
在这里插入图片描述
这样就成功了,不是很懂,源码要求get提交,输入的话不就post了嘛,不管了
在这里插入图片描述
在这里插入图片描述
一开始我对???是有误解的,以为只要username和passwd相等就可以了,以为是可以任意赋值的,后来才知道???是后台已经规定了的,你是猜不到的

在这里插入图片描述
bool类型的true跟任意字符串可以弱类型相等。因此我们可以构造bool类型的序列化数据,无论比较的值是什么,结果都为true。
在这里插入图片描述
这样改一下(a代表array,s代表string,b代表bool,而数字代表个数/长度)
在这里插入图片描述

**bugku(welcome to bugkuctf)

在这里插入图片描述
查看源码

在这里插入图片描述
又是file_get_contents,根据他的提示构造

在这里插入图片描述
没发现什么,然后根据提示的hint.php

在这里插入图片描述
在这里插入图片描述
看到了类似__tostring这类的,立马联想到了序列化,与触发这类函数的条件

在这里插入图片描述
在这里插入图片描述
这一步感觉就感觉很不符合逻辑了,不过很合理,做过的很多题都是要看一下index.php的文件内容,果然菜是原罪,并没有想到这个

在这里插入图片描述

然后就审计这三个文件吧(感觉真心绕),最终目的肯定是要让他输出good啦,那就逆回去,
_tostring()方法里面又定义了如果$file这个属性有赋值的话,那么就会输出这个文件的内容(输出成一个字符串)
在这里插入图片描述
这里就是让他输出flag.php的值

在这里插入图片描述
要这样构造,不太明白为什么file的值不用php伪协议的形式,目的就是要调用hint.php文件,再结合include函数,所以file的值一定是和hint.php有关的

一开始不明白password的值和这道题有什么关系,不知道怎么串联的,个人认为就是Flag这里,记住目的是输出flag.php的内容,而触发条件就是__tostring下定义的file规定为flag.php
在这里插入图片描述
这里的Flag大括号下的file,简单理解为定义一个file变量,定义后下面才能使用,new flag是用来触发class flag的(指的是两个文件之间)

这道题我做着很费劲,想了一整天

被卡住的地方有: password是否可以不用提交
password怎么与其他三个参数结合起来,对__tostring函数触发环境的不熟悉(主要是对另一道反序列化题的误导,那道题是修改了属性,根本上还是基本功不扎实)

还有一个未解决的问题:file=hint.php为什么不用伪协议
(额,刚说完没解决,就想到了一个可能的原因,用伪协议使用来读源码的,这是需要审计的,当后面我们需要使用hint.php的时候,我们不需要知道它的源码,直接file=hint.php调用就行了,这里要弄明白你的目的是读取源码还是调用文件,突然觉得好有道理,haha)

记住:没事多看index.php

(关于php://filter的应用 https://blog.csdn.net/wy_97/article/details/77432002)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值