文章目录
- 前言
- 一、pandas是什么?
- 二、使用步骤
- 1.引入库
- 2.读入数据
- 总结
前言
本文重点从靶场案例分析文件上传漏洞常见的Pylod,本文演示靶场upload-labs
一.文件类型---Pyload
不同的文件对应不同的文件类型,后端代码通过限制特定的文件类型防止文件上传漏洞被利用,简单来说防止利用文件上传漏洞上传webshell,后端会禁止.php后缀的文件所代表的文件类型,从而限制.php文件的上传,下面是一些常见文件的文件类型:
.txt - text/plain
.html - text/html
.php - application/octet-stream
.css - text/css
.js - application/javascript 或 text/javascript
.png - image/png
.jpg 或 .jpeg - image/jpeg
.gif - image/gif
.pdf - application/pdf
.doc 或 .docx - application/vnd.openxmlformats-officedocument.wordprocessingml.document 或
.zip - application/zip
.mp3 - audio/mpeg
.mp4 - video/mp4
演示案例:
$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
if (file_exists($UPLOAD_ADDR)) {
#检查文件类型代码
if (($_FILES['upload_file']['type'] == 'image/jpeg')
|| ($_FILES['upload_file']['type'] == 'image/png')
|| ($_FILES['upload_file']['type'] == 'image/gif')) {
if (move_uploaded_file($_FILES['upload_file']['tmp_name'],
$UPLOAD_ADDR . '/' . $_FILES['upload_file']['name'])) {
$img_path = $UPLOAD_ADDR . $_FILES['upload_file']['name'];
$is_upload = true;
}
} else {
$msg = '文件类型不正确,请重新上传!';
}
} else {
$msg = $UPLOAD_ADDR.'文件夹不存在,请手工创建!';
}
}
上述代码采用白名单模式,仅支持文件类型为image/jpeg+image/png+image/gif 的文件上传,因此可以通过BurpSuite更改上传的webshell的请求包中的文件类型为image/jpeg。
二.文件后缀名
通过禁止特定后缀的文件防止webshell上传
$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
if (file_exists($UPLOAD_ADDR)) {
$deny_ext = array('.asp','.aspx','.php','.jsp');
$file_name = trim($_FILES['upload_file']['name']);
$file_name = deldot($file_name);//删除文件名末尾的点
$file_ext = strrchr($file_name, '.');
$file_ext = strtolower($file_ext); //转换为小写
$file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA
$file_ext = trim($file_ext); //收尾去空
if(!in_array($file_ext, $deny_ext)) {
if (move_uploaded_file($_FILES['upload_file']['tmp_name'], $UPLOAD_ADDR. '/' . $_FILES['upload_file']['name'])) {
$img_path = $UPLOAD_ADDR .'/'. $_FILES['upload_file']['name'];
$is_upload = true;
}
} else {
$msg = '不允许上传.asp,.aspx,.php,.jsp后缀文件!';
}
} else {
$msg = $UPLOAD_ADDR . '文件夹不存在,请手工创建!';
}
}
Apache服务器的配置文件中包含如下语句告诉浏览器将哪些后缀的文件解析为.php文件
AddType application/x-httpd-php .php .php3 .phtml
所以可以通过将.php的后缀改为上述后缀如.php3来绕过防御代码。