建设网站是做手机版好还是pc版好,网站怎么做域名,wordpress主题 免,衣服网站建设方案书Pass_1 1. 上传测试2. 代码审计**获取文件输入的值**#xff1a;**检查是否选择了文件**#xff1a;**定义允许的文件类型**#xff1a;**提取文件的扩展名**#xff1a;**检查文件类型是否允许上传**#xff1a;**构建错误消息并提醒用户**#xff1a; 3.绕过思路3.1 将… Pass_1 1. 上传测试2. 代码审计**获取文件输入的值****检查是否选择了文件****定义允许的文件类型****提取文件的扩展名****检查文件类型是否允许上传****构建错误消息并提醒用户** 3.绕过思路3.1 将WebShell改为.jpg3.2 使用 Burp Suite 监听、上传、改包 4. WebShell连接测试 1. 上传测试
上传WebShell.php文件看一下回显 从回显提示看只能上传.jpg .png .gif格式的文件 2. 代码审计 function checkFile() {// 步骤 1: 获取名为 upload_file 的输入字段的值var file document.getElementsByName(upload_file)[0].value;获取文件输入的值
这行代码使用 document.getElementsByName(upload_file)[0] 来获取页面上第一个名为 ‘upload_file’ 的 input 元素的值。file 变量保存了用户在该输入字段中选择的文件的路径或文件名。在一些浏览器中file 可能只包含文件名而不包含完整路径。 // 步骤 2: 检查文件输入是否为空或未定义if (file null || file ) {alert(请选择要上传的文件!); // 弹出提示框要求用户选择一个文件return false; // 停止执行函数并返回 false}检查是否选择了文件
这段代码首先检查 file 变量是否为空 (null) 或空字符串 ()。如果 file 是空的说明用户没有选择任何文件。alert(请选择要上传的文件!) 会弹出一个提示框通知用户他们需要选择一个文件。return false 用来终止函数的执行并且阻止表单的提交或进一步的操作。 // 步骤 3: 定义允许上传的文件类型var allow_ext .jpg|.png|.gif; // 允许的文件类型包括 .jpg, .png, .gif定义允许的文件类型
这里定义了一个包含允许上传的文件类型的字符串 allow_ext。这个字符串使用竖线 | 分隔每种允许的文件扩展名表示可以上传 .jpg、.png 和 .gif 类型的文件。 // 步骤 4: 提取上传文件的扩展名var ext_name file.substring(file.lastIndexOf(.));// 使用 lastIndexOf(.) 查找最后一个点的位置截取文件名中从点开始到结束的部分即扩展名提取文件的扩展名
file.lastIndexOf(.) 找到文件名中最后一个点 . 的位置。substring 方法从这个位置开始截取文件名的子字符串也就是文件的扩展名部分例如如果文件名是 image.jpg那么 ext_name 就是 .jpg。这种方法提取的扩展名包含了前面的点 .。 // 步骤 5: 判断上传的文件类型是否在允许的范围内if (allow_ext.indexOf(ext_name |) -1) {// 使用 indexOf 方法检查 allow_ext 中是否包含扩展名 ext_name// 通过将 ext_name 加上一个 | 符号可以避免部分匹配问题例如 .jpg 和 .jpeg检查文件类型是否允许上传
allow_ext.indexOf(ext_name |) 检查 allow_ext 字符串中是否包含 ext_name 加上一个竖线 | 的部分。这样做的目的是为了避免部分匹配的问题例如避免 .jpg 匹配到 .jpeg。如果 indexOf 返回 -1说明 ext_name 不在 allow_ext 中即文件类型不被允许上传。 var errMsg 该文件不允许上传请上传 allow_ext 类型的文件, 当前文件类型为 ext_name;// 构建一个错误消息包含允许的文件类型和当前上传文件的类型alert(errMsg); // 弹出错误提示return false; // 停止执行并返回 false}
}构建错误消息并提醒用户
如果文件类型不被允许上传函数会构建一个错误消息说明只允许上传哪些类型的文件并提示当前文件的类型。alert(errMsg) 会弹出这个错误消息框通知用户选择的文件类型不符合要求。return false 停止函数的进一步执行并阻止表单的提交或后续处理。
3.绕过思路
该验证是属于前端白名单验证当点击上传的时候客户端浏览器会检测文件是否是.jpg .png .gif其中一种格式我们可以将WebShell文件先改为.jpg文件之后使用Burp Suite抓包把文件改为.php从而绕过。
3.1 将WebShell改为.jpg 将代码复制粘贴保存为.jpg文件 ?php eval($_POST[Hack]); ?3.2 使用 Burp Suite 监听、上传、改包
改为 .php 格式后放行数据包 4. WebShell连接测试
上传文件地址
http://10.10.0.3:8800/upload/WebShell.php蚂剑连接WebShell测试