当前位置: 首页>后端>正文

渗透学习13 - PHP 开发-个人博客项目&文件操作类&编辑器&上传下载删除读写

文件上传类:-任意文件上传

知识回顾:

前端入门须知:轻松学会form表单制作
前端HTML基础之form表单

1、自己写的上传代码

HTML 中有个上传表单, PHP的$FILES函数会得到上传的文件的全部信息
文件上传后还需要移动文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文件上传</title>
</head>
<body>
<form id="upload-form"action="" method="post" enctype="multipart/form-data">
    <input type="file" name="upload" id="upload">
    <input type="submit" value="Upload">
</form>
</body>
</html>

<?php
$name=$_FILES['upload']['name'];
$type=$_FILES['upload']['type'];
$size=$_FILES['upload']['size'];
$tmp_name=$_FILES['upload']['tmp_name'];
$error=$_FILES['upload']['error'];
echo $name."<br>";
echo $type."<br>";
echo $size."<br>";
echo $tmp_name."<br>";
echo $error."<br>";
?>

渗透学习13 - PHP 开发-个人博客项目&amp;文件操作类&amp;编辑器&amp;上传下载删除读写,如图,第1张
输出的是上传文件的各种属性。

把文件验证并进行移动

代码审计角度看是否有漏洞,就是看其验证过程是否完整

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文件上传</title>
</head>
<body>
<form id="upload-form"action="" method="post" enctype="multipart/form-data">
    <input type="file" name="upload" id="upload">
    <input type="submit" value="Upload">
</form>
</body>
</html>

<?php

$name=$_FILES['upload']['name'];
$type=$_FILES['upload']['type'];
$size=$_FILES['upload']['size'];
$tmp_name=$_FILES['upload']['tmp_name'];
$error=$_FILES['upload']['error'];

echo $name."<br>";
echo $type."<br>";
echo $size."<br>";
echo $tmp_name."<br>";
echo $error."<br>";
//移动文件 ==== 进一步思考,先验证文件,再移动文件
if($type=='image/png'){
    if(!move_uploaded_file($tmp_name,'upload/'.$name)){
        echo "文件移动失败";
    }else{
        echo "文件移动成功";
        echo '/upload/'.$name;
    }
}else{
    echo "文件类型不正确";
}
?>

PHP $_FILES函数详解

2、编辑器默认上传功能,如UEditor等

网站只是引用编辑器而已,核心的验证代码是属于编辑器本身的,如果编辑器本身没有漏洞,那就没办法了。框架与其类似,核心代码都是别人写好了的,并不是自己写的,那就得看编辑器或者框架本身有无漏洞了。老版本也许有。渗透测试的时候,先搞清楚,上传功能是编辑器呢还是框架还是自己写的,前者是公开发布的产品,后者是自己写的,每个人写来的都不一样,需要自己挨个测

文件上传类
1、自写代码验证上传 // 验证核心在代码里
2、引用外部编辑器实现上传 // 验证核心在编辑器
3、引用外部框架实现上传 //验证核心在框架

#文件下载类:-任意文件下载
1、直连 URL 访问
2、传参头部修改
#文件删除类-任意文件删除
1、文件删除
2、文件夹删除
#文件内容操作类-任意文件读取&写入
1、文件读取
2、文件写入
#文件包含-任意文件包含
1、本地文件包含
2、远程文件包含
#Web 漏洞核心:
1、可控变量
2、特定函数-函数的多样化


https://www.xamrdz.com/backend/3tt1848671.html

相关文章: