标签:大小 输入 sed 长度 点击 网页 html 扩展 php
关于原理方面就不加赘述了,可以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类型用来设定某种扩展名文件的打开方式,当具有该扩展名文件被访问时,
浏览器会自动使用指定的应用程序来打开。
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拿到了
标签:大小 输入 sed 长度 点击 网页 html 扩展 php
原文地址:http://www.cnblogs.com/M3tar/p/7345163.html