前言
#文件上传类:-任意文件上传
1、代码自主写
2、编辑器引用
#文件下载类:-任意文件下载
1、直连URL访问
2、传参头部修改
#文件删除类-任意文件删除
1、文件删除
2、文件夹删除
#文件内容操作类-任意文件读取&写入
1、文件读取
2、文件写入
#文件包含-任意文件包含
1、本地文件包含
2、远程文件包含
#Web漏洞核心:
1、可控变量
2、特定函数-函数的多样化
文件上传类:-任意文件上传
1、代码自主写
$_FILES是PHP的全局数组
- $_FILES["file"]["name"] - 上传文件的名称
- $_FILES["file"]["type"] - 上传文件的类型
- $_FILES["file"]["size"] - 上传文件的大小,以字节计
- $_FILES["file"]["tmp_name"] - 存储在服务器的文件的临时副本的名称
- $_FILES["file"]["error"] - 由文件上传导致的错误代码
"file"=上传文件的name
move_uploaded_file(文件临时名,文件路径.文件名)//在php中一般用.来连接。
2、编辑器引用
编辑器是类似于第三方的软件。直接调用别人的插件,这样编辑器就会和代码的逻辑完全不同,假如编辑器存在漏洞,那么代码怎么写都没用。因为他的逻辑是编辑器的那一套。
1、自写代码验证上传 //验证核心在代码里
2、引用外部编辑器实现 //验证核心在编辑器
3、引用开发框架实现 //验证核心在框架
文件下载类:-任意文件下载
1、直连URL访问
直连下载有个特点,他是去访问那个文件,即如果是zip这一类的文件,则回去下载,如果是php,txt等这一类文件,他只会去执行,不会去下载。(所以需要提前知道那个文件的名字)
2、传参头部修改
传参下载,类似于他会去修改请求的数据包,类似与burpsuite。这样就会造成结果不可控,即php等源码文件可能会被请求直接下载。
(传参下载,源码可能会被猜解出来。导致源码泄露).
文件删除类-任意文件删除
1、文件删除
unlink()函数是删除文件的意思。
2、文件夹删除
rmdir();删除文件夹的意思。
不管是文件和文件夹删除,都可能会导致源码被删除,导致网站崩溃。
#文件内容操作类-任意文件读取&写入
1、文件读取
function fileread($name){
$f=@fopen($name,"r");//fopen函数用来打开一个文件或者url,mode的r代表"只读"
$code=@fread($f,filesize($name));//fread(读取的文件,读取到哪个位置)函数代表读取打开的文件,filesize代表返回文件的最大字节,
echo $code;
@fclose($f);//关闭打开的文件
2、文件写入
function filewrite($name,$txt){
$f=fopen($name,"a+");//以读写方式打开文件
fwrite($f,$txt);//fwrite(写入的文件名,写入的内容)
fclose($f);
文件读取和文件写入都存在一个任意文件读写以及后门植入的风险。
#文件包含-任意文件包含
1、本地文件包含
2、远程文件包含
总结:Web漏洞核心:
1、可控变量
2、特定函数-函数的多样化