

文件包含、文件上传、文件下载、文件删除、文件写入、文件遍历
其中文件上传可以上传在本地服务器,也可以上传在oss对象存储。但是如果使用oss又不进行相关配置,在浏览器中f12后可以在upload.js文件中看到access id/key,再利用oss browser登陆,就可以看到上传的文件。
1.上传至服务器本身的存储磁盘(传统方法)
2.借助云产品OSS存储对象去存储文件(不解析)(泄露安全)
由于只能存储而不能解析,因此即使上传木马也不能获取权限,就更加安全,但是如果在浏览器中f12,也有可能可以找到access id/key
3.把文件上传到其他域名
例如:www.xiaodi8.com—>upload.xiaodi8.com
1.在upload.js里配置accesskey(RAM访问控制->概述->accesskey)

文件查看url:
将accesskey等输入upload.js

设置好之后去oss上传,发现报错了

2.报错需要改为公共读写(权限控制-读写权限)

或者使用oss-browser.exe,输入access id和key连接上去,就可以看见具体数据


如果在浏览器中f12,也有可能可以找到access id/key
文件包含相关函数
漏洞产生原因
1.使用什么函数去执行(函数方面的)
2.可以控制的值(用户提交的恶意数据)
文件上传机制
实现文件编辑、删除、下载、包含功能具体步骤
最终完整代码
具体过程
第一步
效果如图所示:

之后要实现在网页上显示出文件和文件夹,代码和结果如下图所示

第二步
此时,显示出来的有文件夹也有文件,那么接下来需要把文件夹和文件分开,list.png图标显示文件夹,file.png图标显示文件。
代码变成
显示如下图

知识点1:filemtime()函数
返回文件内容上次的修改时间
知识点2:foreach()函数
foreach循环(只能用于数组):
第一种语法:
第二种语法:
每进行一次循环迭代,当前数组元素的值就会被赋值给$value,并且数组指针会逐一移动,直到最后一个元素。
第三步
接下来要实现文件夹的打开功能。php代码中需要定义函数,并将html中的操作代码添加a标签。代码变成:

网页端可以看到:


第四步
实现文件的删除功能,代码如下:


网页端显示如下

现在尝试点击删除1.php,刷新页面后,1.php消失,说明删除功能实现

知识点3:unlink()函数
用于删除文件
unlink(filename[必需],content[可选:规定文件句柄的环境])
知识点4
<a>标签用于创建超链接
href属性指定链接的目标url
知识点5
$action=isset($_GET['a']) ?$_GET['a']:'';的解释:
?:是三元运算符,类似于if_else语句
语法为:(condition) ? (true_expression) : (false_expression)
如果isset($_GET['a'])为true,即a存在,则将$_GET['a']的值赋给$action;如果isset($_GET['a'])为false,即a不存在,则将空字符串赋给$action。
知识点:6switch语句
用于根据多个不同条件执行不同动作
语法:
<?php
switch (expression){
case value1:若expression的值等于某个case的值,就执行相应代码块
//代码块1
break;(用于终止switch语句,防止继续执行下一个case)
case value2:
//代码块2
break;
//更多的case语句
default:(是可选的,用于指定当没有匹配的case时执行的代码块)
//如果没有匹配的值
}
?>
第五步
实现文件的下载功能
在switch语句下增加代码:
点击下载1.txt,可以看到文件下载功能也实现了。

第六步
实现文件的编辑功能
修改后的代码参考上面的最终完整代码,效果如图

在文本框中输入内容点击下面的提交,刷新可以看到写入的内容

知识点7:basename()函数
返回路径中的文件名部分
basename(path[必需],suffix[可选,规定文件扩展名,若有文件扩展名,将不会显示该扩展名])
知识点8:dirname()函数
返回路径中的目录名称部分
知识点9:有关文件读、写的函数
1.file_get_contents():读取文件内容
2.fopen()、fread():文件打开、读入
3.fwrite(file[必需] string[必需,要写入的内容] length[可选,要写入的最大字节])
知识点10:ini_set()
ini_set('open_basedir',_DIR_);等价于dirname(_FILE_)
_DIR_是魔术常量,返回当前php文件所在的目录路径,值随着它们在代码中的位置改变而改变
知识点11
注释:
if(isset($_POST['code'])){
$f=fopen("$path/$file",'w+');
fwrite($f,$_POST['code']);
fclose($f);
}
第一行用于检查表单是否提交,并且code字段是否存在;
w+表示文件以读写方式打开,若文件不存在,则创建该文件,若文件存在,打开文件后文件内容会被清空,即文件大小变为0;
第三行中的$_POST['code']包含用户在文本区域中输入的内容。
文件下载漏洞(编辑、删除同理)
?a=down&path=
当等号后面的值不同时,就可以下载其他文件,同理,也可以删除、编辑其他文件。
例如,当访问?a=down&path=https://blog.csdn.net/m0_/article/details/1.txt时,会自动下载1.txt文件

文件使用系统指令删除:
和在cmd下使用一样的原理

当不知道执行结果时,可以使用?path=del 1.txt | ping 127.0.0.1
例如,我删除了一个文件,但是不会立即反馈给我是否删除成功,此时就可以 | ping dnslog(get subdomain)。
但是也有可能被以下代码过滤掉:
该文章由番薯小羊卷~和李豆豆喵共同完成。
到此这篇若依文件上传怎么删除(若依文件上传下载)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/bcyy/28781.html