小迪安全 Web安全 基础入门 – 第十三天 – PHP开发 – 个人博客项目&文件操作类&编辑器&上传下载删除读写
Posted SecurityHacker
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小迪安全 Web安全 基础入门 – 第十三天 – PHP开发 – 个人博客项目&文件操作类&编辑器&上传下载删除读写相关的知识,希望对你有一定的参考价值。
一、文件上传类:-任意文件上传
(一)分类
1、自主编写的代码中包含任意文件上传。
2、站点使用的编辑器代码中引用了任意文件上传。
(二)代码示例
<?php //设置上传文件过滤 if((($_FILES["file"]["type"] == "image/gif") ||($_FILES["file"]["type"] == "image/jpeg") ||($_FILES["file"]["type"] == "image/jpg") ||($_FILES["file"]["type"] == "image/png") ||($_FILES["file"]["type"] == "image/pjpeg")) ||($_FILES["file"]["size"] < 20000)) //如果存在错误 if($_FILES["file"]["error"] >0) echo "Error: " . $_FILES["file"]["error"] . "<br />"; else //文件名 echo "Upload: ". $_FILES["file"]["name"] . "<br />"; //文件类型 echo "Type: " . $_FILES["file"]["type"] . "<br />"; //文件大小 echo "Size: " . ($_FILES["file"]["size"] / 1024) . "Kb<br />"; //存储在服务器的文件的临时副本名称 echo "上传文件的临时副本名: " . $_FILES["file"]["tmp_name"] . "<br />"; //如果文件已存在 if(file_exists("upload/" . $_FILES["file"]["name"])) echo $_FILES["file"]["name"] . "已存在。"; else//若文件不存在,把上传的文件保存到其他位置 move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]); echo "文件保存位置:" . "upload/" . $_FILES["file"]["name"] . "<br />"; else//若上传的文件不满足过滤条件 echo "无效文件!"; ?>
二、文件下载类:-任意文件下载
(一)分类
1、直连URL访问。下载文件以直连URL形式访问,链接写死。
2、传参头部修改。对下载文件的URL进行过滤,不直接访问。
(二)代码示例
<html lang="en"> <head> <meta charset="utf-8"> <title>文件下载</title> </head> <body> <h1>直连下载</h1> <?php getfilename(); ?> <form id="upload-form" action="" method="POST" enctype="multipart/form-data"> 需要下载的文件:<input type="text" name="name" /> <input type="submit" value="下载" /> </form> <?php $name=$_POST[\'name\'];geturldown($name); ?> <h1>传参下载</h1> </body> </html> <?php function getfilename() //获取当前脚本目录 $filepath = getcwd(); //扫描upload目录 $filename = scandir($filepath.\'/upload/\'); //输出upload目录下的文 //var_dump($filename); echo "<br>"; //过滤数组,只输出值 foreach($filename as $value) if($value != \'.\' && $value != \'..\') $arr[] = $value; echo $value . "<br>"; function geturldown($name) $url = \'http://\' . $_SERVER[\'HTTP_HOST\'] . \'/file/upload/\' . $name; header("Location:$url"); echo $url . "<br>"; exit; ?>
三、文件删除类-任意文件删除
(一)分类
1、文件删除。
2、文件夹删除。
(二)代码示例
<html lang="en"> <head> <meta charset="utf-8"> <title>php文件删除</title> </head> <body> <h1>php文件删除</h1> <?php getfilename();?> <form id="upload-form" action="" method="post" enctype="multipart/form-data"> 需要删除的文件:<input type="text" name="name" /> <input type="submit" value="删除" /> </form> <?php $name=$_POST[\'name\'];delfilename($name);?> <h1>php文件夹删除</h1> <?php getfilename();?> <form id="upload-form" action="" method="post" enctype="multipart/form-data"> 需要删除的文件夹:<input type="text" name="name" /> <input type="submit" value="删除" /> </form> <?php $name=$_POST[\'name\'];deldirfilename($name);?> </body> </html> <?php //遍历目录 function getfilename() $dir=getcwd(); $file=scandir($dir . \'/upload/\'); foreach($file as $value) if($value != \'.\' && $value != \'..\') $arr[] = $value; echo $value . \'<br>\'; //删除文件 function delfilename($name) $dir=getcwd(); unlink($dir . \'\\upload\\\\\' . $name); //删除文件夹 function deldirfilename($name) $dir=getcwd(); $file=scandir($dir); rmdir($dir . \'\\upload\\\\\' . $name); ?>
四、文件内容操作类-任意文件读取&写入
(一)分类
1、文件读取。
2、文件写入
(二)代码示例
<?php echo "<h2>php文件读取</h2>"; //读取webdictionary.txt文件 $myfile = fopen("webdictionary.txt","r"); //输出webdictionary.txt文件内容 //echo fread($myfile,filesize("webdictionary.txt")); //单行输出直到文件末尾 while(!feof($myfile)) echo fgets($myfile) . "<br>"; //关闭文件 fclose($myfile); echo "<br>"; ?> <?php echo "<h2>php文件写入</h2>"; //打开newfile文件,若文件不存在,则fopen()函数会创建这个文件 $myfile = fopen("newfile.txt","w"); //向newfile文件中写入数据 $txt = "Bill Gates\\n"; fwrite($myfile,$txt); $txt = "Steve Jobs\\n"; fwrite($myfile,$txt); fclose($myfile); $myfile = fopen("newfile.txt","r"); //逐行输出文件内容直至末尾 while(!feof($myfile)) echo fgets($myfile) . "<br>"; //关闭文件 fclose($myfile); ?>
五、文件包含-任意文件包含
(一)分类
1、本地文件包含。
2、远程文件包含。
(二)代码示例
创建一个名为include_file.php的文件,写入如下内容:
<?php include(\'1.txt\'); ?>
在脚本当前目录下创建一个文件1.txt,在1.txt中写入如下内容:
<?php phpinfo(); ?>
执行include_file.php文件到浏览器中,浏览器会解析到phpinfo文件中去。
六、Web漏洞核心
(一)可控变量
1、漏洞利用的一个重要思路就是寻找可控变量
2、用户通过站点中存在的可控变量,进而控制被调用的文件,从而实现对站点入侵
(二)特定函数-函数的多样化
由于代码中使用的某些特定函数对用户输入数据处理不当,当用户利用这些特定函数注入恶意程序时,可导致关键系统被控制的漏洞可以劫持程序执行流程,转向执行攻击者指定的任意指令、代码等,从而实现对站点的入侵。
以上是关于小迪安全 Web安全 基础入门 – 第十三天 – PHP开发 – 个人博客项目&文件操作类&编辑器&上传下载删除读写的主要内容,如果未能解决你的问题,请参考以下文章