又来了我的攻防世界
原题:攻防世界
怎么说呢...先看一下题目吧
看到题目的时候我第一反应是无从下手,之前说过博主是个刚起步的新手而且对php不是特别了解...这真的是难度一的题嘛...不过!在查找了很多资料后我逐渐理解了一切,也给大家分享一下并且记录自己做题的过程。
首先这个题的题目为unserialize3,这个单词在php中代表反序列化,所以这个题基本就是和反序列化有关的题目。
序列化的意思是:是将变量转换为可保存或传输的字符串的过程
那么反序列化就是将字符串在转化回变量。这种方式能轻松的存储和传输数据,但反序列化有一个漏洞,通过这个漏洞我们可以跳过反序列化的操作的执行。这样就不会执行后面的exit函数。
但是原代码中并没有序列化所以我们无法进行反序列化,所以我们需要添加一个序列化来将我们的变量变成字符串。
在php中序列化和反序列化函数分别为serialize,__wakeup。下面就要将代码补充完整(即添加序列化)
博主是在sublime然后通过phpstudy配置php变量然后直接在网页打开
另外不要忘记在php的同一个文件夹添加初始界面文件
添加后我们在网页中输入本地回环地址和文件名即可看到:
对于这个字符串我们可以看到它有一个变量值("xctf":后面的1)。而对于反序列化来说如果字符串中的变量的数目和真实的数目不一样那么__wakeup会出现错误,我们就造成了反序列化漏洞。
所以我们在填写字符串时将变量值的数目从1改成2
输入网页网址后即可获得flag
来源地址:https://blog.csdn.net/m0_73303597/article/details/127717734