2.php开发-个人博客项目&文件操作类&编辑器&上传下载删除读写

发布时间:2024年01月20日


?

知识点

演示案例

?


?

文件上传类:

form表单上传文件

--文件上传,--php接收,处理

$_FILES['']['']

action --->提交给谁处理

move函数移到文件

---文件上传漏洞啊!!!

——ueditor 实现编辑器的加载

上传文件的方法:

用了编辑器,就要用编辑器去验证了(编辑器没漏洞,那就没漏洞——他有问题就有问题,他没问题就没问题)

框架--人家封装好的代码(有没有漏洞不是你说了算)

---看网站用了什么,有没有漏洞。

?


?

文件下载

--只能下载支持下载协议的,zip,exe,

http://ww/wdwadad/kk.zip

http://dawdaf/fawf/down.php?filename=kkk.zip

直连下载:直接访问地址去下载

咱 soft 目录 ——下有文件

--php数组取值

<h1>文件列表</h1>
<?php getfilename(); ?>
?
<h1>直连下载</h1>
<form action="" method="post">
 ? ?<input type="text" name="filename">
 ? ?<input type="submit" value="下载">
</form>
<?php @$name=$_POST['filename'];filenameurl($name);?>
//自定义文件直连下载
function filenameurl($name){
 ? ?$url='http://'.$_SERVER['HTTP_HOST'].'/blog/soft/'.$name;
 ? ?#header("location:$url");
}

传参下载
<?php
 
$filename = $_GET['filename'];
 
// 修改这一行设置你的文件下载目录
$download_path = "ficheros/";
 
// ?不能下载上一层目录的文件
if(eregi("\.\.", $filename)) die("抱歉,你不能下载该文件!");
$file = str_replace("..", "", $filename);
 
// 包含 .ht 的文件不能下载
if(eregi("\.ht.+", $filename)) die("抱歉,你不能下载该文件!");
 
// ?创建文件下载路径
$file = "$download_path$file";
 
// ?判断文件是否存在
if(!file_exists($file)) die("抱歉,文件不存在!");
 
//  文件类型,作为头部发送给浏览器
$type = filetype($file);
 
// 获取时间和日期
$today = date("F j, Y, g:i a");
$time = time();
 
// ?发送文件头部
header("Content-type: $type");
header("Content-Disposition: attachment;filename=$filename");
header("Content-Transfer-Encoding: binary");
header('Pragma: no-cache');
header('Expires: 0');
// 发送文件内容
set_time_limit(0);
readfile($file);
 
?>

//自动义 文件传参下载
function filenameget($name){
 ? ?$filename = $name;
 ? ?$download_path = "soft/";
 ? ?if(eregi("\.\.", $filename)) die("抱歉,你不能下载该文件!");
 ? ?$file = str_replace("..", "", $filename);
 ? ?if(eregi("\.ht.+", $filename)) die("抱歉,你不能下载该文件!");
?
// ?创建文件下载路径
 ? ?$file = "$download_path$file";
?
// ?判断文件是否存在
 ? ?if(!file_exists($file)) die("抱歉,文件不存在!");
?
//  文件类型,作为头部发送给浏览器
 ? ?$type = filetype($file);
?
// 获取时间和日期
 ? ?$today = date("F j, Y, g:i a");
 ? ?$time = time();
?
// ?发送文件头部
 ? ?
 ? ?header("Content-type: $type");
 ? ?header("Content-Disposition: attachment;filename=$filename");
 ? ?header("Content-Transfer-Encoding: binary");
 ? ?header('Pragma: no-cache');
 ? ?header('Expires: 0');
 ? ?
// 发送文件内容
 ? ?set_time_limit(0);
 ? ?readfile($file);
}

——直连地址,传参地址——

必须是传参地址才能操作。

直连地址很稳巴巴(写死了)。

?


?

文件删除

文件/文件夹

del

——html代码:

<h1>文件删除</h1>
<?php getfilename(); ?>
<form action="" method="post">
 ? ?<input type="text" name="filename">
 ? ?<input type="submit" value="删除">
</form>
<?php @$name=$_POST['filename'];filedel($name);?>
<h1>文件夹删除</h1>
<?php getfilename()?>
<form action="" method="post">
 ? ?<input type="text" name="filedir">
 ? ?<input type="submit" value="删除">
</form>
<?php
//自定义文件文件夹读取函数
function getfilename(){
 ? ?$dir=getcwd();
 ? ?$file=scandir($dir);
 ? ?foreach ($file as $value){
 ? ? ? ?if($value != '.' && $value != '..') {
 ? ? ? ? ? ?$arr[] = $value;
 ? ? ? ? ? ?echo $value.'<br>';
 ? ? ?  }
 ?  }
}
//自定义文件删除函数
function filedel($name){
 ? ?@unlink($name);
}
//自定义文件夹删除函数
function filedeldir($dir){
 ? ?@rmdir($dir);
}
?>

?


?

文件读取

<h1>读取操作</h1>
<form action="" method="post">
 ? ?<input type="text" name="r">
 ? ?<input type="submit" value="读取">
</form>
<?php @$name=$_POST['r'];fileread($name);?>

//自定义文件文件夹读取函数
function getfilename(){
 ? ?$dir=getcwd();
 ? ?$file=scandir($dir);
 ? ?foreach ($file as $value){
 ? ? ? ?if($value != '.' && $value != '..') {
 ? ? ? ? ? ?$arr[] = $value;
 ? ? ? ? ? ?echo $value.'<br>';
 ? ? ?  }
 ?  }
}
?
//自定义文件读取函数
function fileread($name){
 ? ?$f=fopen($name,"r");
 ? ?$code=fread($f,filesize($name));
 ? ?echo $code;
 ? ?fclose($f);
?
}

?


?

文件写入

<h1>写入操作</h1>
<form action="" method="post">
 ?  文件:<input type="text" name="w">
 ?  内容:<input type="text" name="txt">
 ? ?<input type="submit" value="写入">
</form>
<?php @$name=$_POST['w'];@$txt=$_POST['txt'];filewrite($name,$txt);?>

//自定义文件写入函数
function filewrite($name,$txt){
 ? ?$f=fopen($name,"a+");
 ? ?fwrite($f,$txt);
 ? ?fclose($f);
}

?


?

文件包含-任意文件包含

1-本地文件包含(包含本地服务器的文件)

2-远程文件包含(包含人家的)

包含代表执行,脚本执行。

包含!——————站在开发者角度,帮我省去一些代码。(数据库连接等等)

————Include

?


?

总结:

以上每个功能都有自己的函数方法,

直连地址没有变量,不能控制,(写死了)

变量要可控,(不然只能读写死的那个)

扫描,指纹识别

?


?

web漏洞核心:

1-可控变量

2-特定函数——函数的多样化(同一个功能的函数有很多呀)

什么函数决定什么漏洞,可控变量是决定有没有漏洞的原因。

文章来源:https://blog.csdn.net/2303_80857229/article/details/135717710
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。