1.buuctf:[网鼎杯 2020 青龙组]AreUSerialz
具备知识点:序列化和反序列化。
解题思路:题目中出现了write,read,is_valid,_construct等函数,我们先了解代码运行过程->用echo+"函数" 写一份新的php代码copy.php(复制修改)。然后写一个test.php,使用序列化的原理和Burpsuite工具将数据放入copy.php中,调试代码读取文件flag.php(此php文件先自己创建一个)。
其中会出现的问题及解决方法:
1)显示not valid ->原因是op被强制等于1,故将op强类型转换,去掉字符串的引号;
2)显示valid但是不显示flag->原因是传入copy.php的数据ascii码小于32,而会小于32是因为protected类型序列化时会出现%00,其ASCII码是0,故将protected换成public;
3)前面两个问题都解决了但是不能读出flag->原因是windows环境下flag.php需要写成"D:/phpstudy_pro/WWW/flag.php" ,而linux环境下默认为该文件所在文件下的flag.php,不需要写D:\phpstudy_pro\WWW。。。