我的挑战是$_GET['mPage']
包含php文档。
代码下方:http://example.com/ includeMe.php
<?php
phpinfo();
?>
moveTo.php 正则表达式:
if(preg_match("/(data|http|https|ftp):\/\/([a-zA-Z0-9-_]+)\.([a-zA-Z0-9-_]+)/i", $_GET['mPage'])) {
echo 'no';
}
如何绕过包含includeMe.php
?
尝试:
http://example.com/moveTo.php?mPage=http://example.com/incldue.php
答案 0 :(得分:1)
假设两个php文档都可以在同一个域下访问,你可以使用&#34;相对文件访问&#34;并尝试这样的事情:
http://example.com/moveTo.php?mPage=includeMe.php
http://example.com/moveTo.php?mPage=../includeMe.php
如果文件位于同一个文件夹中,那么前者为我工作。
根据文件在文件系统中的位置,您可能需要使用多个../
和正确的文件夹名称遍历文件系统。
如果&#34; includeMe.php&#34;可以在不同的域(例如example2.com)下访问,您需要使用未包含在正则表达式中的协议。
正如您在此处所见:DEMO所有使用http
,https
,data
,ftp
的尝试都被阻止。您可以使用ftps
,这在RFI中也很常见。
可能进一步逃避的清单:https://websec.wordpress.com/2010/02/22/exploiting-php-file-inclusion-overview/