文件上传+绕过方法+菜刀的基本用法

关于原理方面就不加赘述了,可以Google一下,我贴一下几百年前我的理解:原理:上传一个脚本(jsp,asp,php),然后就得到机子的shell (哇,感觉很粗糙)

文件上传漏洞的几种常见的姿势:

1.js前端验证
2.mime
3.后缀名
4.修改字母大小写(同第一种,就是把PHP几种大小写试一试 还有可能是phtml)
5.00截断
6.上传含有一句话的图片

最简单的:先直接上传一个php文件,看是否正确

1.js前端验证:

一般都是在网页上写一段JavaScript脚本,校验上传文件的后缀名,有白名单形式也有黑名单形式。
  判断方式:在浏览加载文件,但还未点击上传按钮时便弹出对话框,内容如:只允许上传.jpg/.jpeg/.png后缀名的文件,而此时并没有发送数据包。

解决方法:
 1):抓包,修改文件后缀名 比如:传上去的是一个jpg格式,然后改成php  要看能不能传上去  如果传不上去就改后缀 然后抓包改成php
 2):直接F9,HTML里面 将filename="xxser.jpg"修改为filename="1.php"
  这里注意第二种,把长度修改了,要是之前Content-Length =200 这里就要修改为196

2.MIME验证:
MIME类型用来设定某种扩展名文件的打开方式,当具有该扩展名文件被访问时,
浏览器会自动使用指定的应用程序来打开。

1)content-type字段校验:

GIF 图片的MIME image/gif
    CSS            text/css
    jpg            image/jpg

比如:上传了一个php,抓包,看到php的MIME类型为 application/php ,

而在Upload.php判断文件类型是否为image/jpeg,这里就无法通过验证

解决:在包里面把Content-Type 更改为 image/jpeg ,通过验证

2)文件头校验

  可以通过自己写正则匹配,判断文件头内容是否符合要求,这里举几个常见的文件头对应关系:
(1) .JPEG;.JPE;.JPG,”JPGGraphic File”
(2) .gif,”GIF 89A”
(3) .zip,”Zip Compressed”
(4) .doc;.xls;.xlt;.ppt;.apr,”MS Compound Document v1 or Lotus Approach APRfile”

解决办法:在木马内容基础上再加了一些文件信息,有点像下面的结构
         GIF89a<?php phpinfo(); ?>

3.后缀名( 00截断) 这是一个讲述截断在文件上传和包含之中的利用:http://www.2cto.com/article/201502/377462.html
客户端传输到服务端 在服务端:缓存上传的文件,然后服务器端进行验证,如果符合要求,就上传到目录, 如果不符合,就直接把缓存文件删除

方法:抓包,将上传的1.jpg改成 2.php(空格)1.jpg 然后单击HEX进入十六进制编辑,
      将文件名中空格的十六进制20改成00 (这里就是去找到改的那句话),单击“GO”
      发现成功上传2.php 2.php后面的字符已经被截断(可以在Raw里面找到)

6.上传含有一句话的图片
 
  上传含有一句话的图片,上菜刀,右键添加shell,地址栏输入 上传地址

讲述中国菜刀用法:
  这里上传成功了(一般php都是传自己写的一句话木马),就在网址栏得到网址栏了,打开菜刀,
 右键添加,编码格式选择UTF-8,脚本类型PHP ,然后连接,shell拿到了,然后就开始可以去搞事情了
 或者flag拿到了

时间: 2024-08-29 00:48:02

文件上传+绕过方法+菜刀的基本用法的相关文章

Getshell | 文件上传绕过整理

WAF绕过 安全狗绕过 1.绕过思路:对文件的内容,数据.数据包进行处理. 关键点在这里Content-Disposition: form-data; name="file"; filename="ian.php" 将form-data; 修改为~form-data; 2.通过替换大小写来进行绕过 Content-Disposition: form-data; name="file"; filename="yjh.php" C

(转)多种文件上传绕过手法

相信大家都或多或少遇到过上传的问题,本文讲些小技巧,原理用文字叙述实在麻烦 目录:JS验证实例 /大小写/双重后缀名/过滤绕过/特殊后缀名/文件流类型/文件重写 1.javascript验证突破 查看源代码 在IE中禁用掉即可(火狐的noscript插件也行) 2.大小写突破 他只是把php做了限制,改成Php就可以了 3.双重后缀名突破 在php后面加一个空格即可突破 4.过滤绕过 这个大家应该经常遇到,上传一个php会自动改成gif 我们这样改一下,pphphp,那么就过滤了  第一个php

selenium之 文件上传所有方法整理总结

本文转载"灰蓝"的原创博客.http://blog.csdn.net/huilan_same/article/details/52439546 文件上传是所有UI自动化测试都要面对的一个头疼问题,今天博主在这里给大家分享下自己处理文件上传的经验,希望能够帮助到广大被文件上传坑住的seleniumer. 首先,我们要区分出上传按钮的种类,大体上可以分为两种,一种是input框,另外一种就比较复杂,通过js.flash等实现,标签非input 我们分别对这两种进行分析: 1.input标签

IIS中的大文件上传问题解决方法

IIS出于安全考虑限制了大文件的上传,而网上百度到的大部分解决方法都是用一个管理员权限的记事本打开一个文件修改参数,但是我发现里面根本没有网上所说的那些参数,最后自己找到了修改发布文件的webconfig的方法解决的IIS对大文件上传的限制. 首先在system.web中加入以下代码 [csharp] view plain copy <httpRuntime maxRequestLength="2097151"//最大上传长度 useFullyQualifiedRedirectU

ajaxFileUpload.js插件支持多文件上传的方法

前提条件:ajaxFileUpload.js插件多文件上传步骤:1.修改源码,(源码只支持单个文件的上传):复制代码 代码如下: //修改前代码------- //var oldElement = jQuery('#' + fileElementId); //var newElement = jQuery(oldElement).clone(); //jQuery(oldElement).attr('id', fileId); //jQuery(oldElement).before(newEle

文件上传绕过知识总结一

前言 重新学习漏洞原理,记录下文件上传的绕过姿势 客户端的检测: 1 function checkFile() { 2 var file = document.getElementsByName('upload_file')[0].value; 3 if (file == null || file == "") { 4 alert("请选择要上传的文件!"); 5 return false; 6 } 7 //定义允许上传的文件类型 8 var allow_ext =

el-upload用form的方式多文件上传的方法

使用el-upload组件遇到的坑. 1.第一种感觉最好,首先多个文件是一个http请求,另外还可以传除文件外其他的参数,但是没有进度条了. 发送请求的部分没有注释的部分是我分装了调后台的api,注释的部分是直接调. 注意如果使用自定义提交http-request,则on-success和on-error这两个钩子函数会不起作用,另外点击事件submitUpload中的this.$refs.uploadFiles.submit();是必须的,个人感觉是先将所有的文件给el-form处理, 我发先

.net文件上传的方法

前台js代码 导入jQuery上传插件Uploadify 3.2 1 $("#photofile").uploadify({//上传电子相片 2 swf: '/Theme/NewBlueVacation/images/uploadify.swf', 3 uploader: '/ExtendClass/UploadFiles.ashx', //后台处理文件的路径 4 width: 85, 5 height: 21, 6 buttonText: ' ',//上传按钮文字 7 fileSiz

前端文件上传读取方法(头像上传)

具体说明代码呈现,感兴趣的可以自行运行查看效果: <!doctype html> <html> <head> <meta charset="utf-8"> <title></title> <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1