Web学习13

  1. 知识点
  2. 案例
    1. 文件上传
    2. 文件删除
    3. 文件读取
    4. 文件写入
      1. 总结:
    5. 文件包含

知识点

文件上传类-任意文件上传
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();?>