知识点
文件上传类-任意文件上传
1、代码自主写
2、编辑器引用
文件下载类-任意文件下载
1、直连URL访问
2、传参头部修改
文件删除类-任意文件删除
1、文件删除
2、文件夹删除
文件内容操作类-任意文件读取&写入
1、文件读取
2、文件写入
文件包含-任意文件包含
1、本地文件包含
2、远程文件包含
案例
文件上传
直连下载是安全的,传参下载有安全隐患,直连下载只能下载常规的支持下载协议的,像zip,exe文件。但是传参下载也会尝试下载php代码,会造成源码泄露
具体的直连地址实例,必须要有传参地址才能进行进一步的操作
<html lang="en">
<head>
<meta charset="UTF-8">
<title>文件下载</title>
</head>
<h1>直连下载</h1>
<?php getfilename();?>
<form id="upload-form" action="" method="post" enctype="multipart/form-data" >
需要下载的文件:<input type="text" name="name" /> <br />
<input type="submit" value="下载" />
</form>
<?php $name=$_POST['name'];geturldown($name);?>
<h1>传参下载</h1>
<?php getfilename();?>
<form id="upload-form" action="" method="post" enctype="multipart/form-data" >
需要下载的文件:<input type="text" name="name" /> <br />
<input type="submit" value="下载" />
</form>
<?php $name=$_POST['name'];filenameget($name);?>
</body>
</html>
文件删除
funtion delfilename($name){
unlink($name)
}
//删除文件
function delfiledir($dir){
unlink($dir)
}
//删除文件夹
文件读取
function fileread($name){
$myfile = fopen($name,"r") or die("Unable to open file!");
echofread($myfile,filesize($name));
fclose($myfile);
}
知识点补充
r:打开文件为只读。文件指针在文件的开头开始。
w:打开文件为只写。删除文件的内容或创建一个新的文件,如果它不存在。文件指针在文件的开头开始。
a:打开文件为只写。文件中的现有数据会被保留。文件指针在文件结尾开始。创建新的文件,如果文件不存在。
x:创建新文件为只写。返回FALSE和错误,如果文件已存在。
r+:打开文件为读/写、文件指针在文件开头开始。
w+:打开文件为读/写。删除文件内容或创建新文件,如果它不存在。文件指针在文件开头开始。
a+:打开文件为读/写。文件中已有数据会被保留。文件指针在文件结尾开始。创建新文件,如果它不存在。
x+:创建新文件为读/写。返回FALSE和错误,如果文件已存在
文件写入
function filewrite($name,$txt){
$myfile = fopen($name,"a+") or die("Unable to write file");
fwrite($myfile,$txt);
fclose($myfile);
}
总结:
Web漏洞核心:
1、可控变量
2、特定函数-函数的多样化
文件包含
include('1.txt');
//包含代表执行,脚本执行
//1.txt换成变量
//变量值 本地文件 远程文件
$file=$_GET['X'];
include($file); //require也会造成文件包含
//我上传一个图片,得到图片地址,尝试包含图片,图片里面有后门代码
<?php phpinfo();?>