从零开始学安全(二十九)●上传漏洞代码分析

这是一段php 对文件上传黑名单限制  出现看没什么问题  但对包含函数运用错误以及对php 各种类型解析也不了解

1第一个问题  

拿上传的后缀名 去和黑名单 对比   这种代码首先逻辑上就要明确 不是拿后缀名和黑名单数组对比是否包含 因为后缀可以是 php3  而是 对黑名单里的每个字符串逐个 去对比 上传后缀     应该用 输入字符和数组里的字符进行对比是否有包含关系

第二个问题 黑名单验证不全

|asp/aspx|asp,aspx,asa,asax,ascx,ashx,asmx,cer,aSp,aSpx,aSa,aSax,aScx,aShx,aSmx,cEr| |php|php,php5,php4,php3,php2,pHp,pHp5,pHp4,pHp3,pHp2,html,htm,phtml,pht,Html,Htm,pHtml| |jsp|jsp,jspa,jspx,jsw,jsv,jspf,jtml,jSp,jSpx,jSpa,jSw,jSv,jSpf,jHtml|

上面的是各种可解析的后缀  c# mvc 模式如果在开启时没有禁用aspx 视图模式 同样可能出现asp 解析黑名单绕过问题

我们来看看第二段代码 白名单绕过

这里是判断文件类型是否是 jpg ,png 等图片格式 如果是则上传文件

我们这里准备一个藏有代码的图片

这里我们要运用到 %00  php 文件名截断的知识     比如我们上传一个 1.png 图片这里有一句话木马

再用抓包工具  1.png  改成  1.png.[\0].php   就可以突破上面的代码 成功上传木马

这里运用了 %00  向后阶段    upldate/1.php%00/1.png  %00后面自动被截断了  这get 请求下的 如果是post 那么 需要修改二进制 他的截断也是00

0d 0a 2d   代表---    p 是70   在后面添加新baye

如上有的代码是判断头文件 是不是图片  所以我们可以在底部插入木马

原文地址:https://www.cnblogs.com/yuanzijian-ruiec/p/10558031.html

时间: 2024-10-09 03:01:47

从零开始学安全(二十九)●上传漏洞代码分析的相关文章

【Web安全】文件上传漏洞原理分析

0x01 文件上传漏洞简介 为了让用户将文件上传到网站,就像是给危机服务器的恶意用户打开了另一扇门.即便如此,在今天的现代互联网的Web应用程序,它是一种常见的要求,因为它有助于提高业务效率.企业支持门户,给用户各企业员工有效地共享文件.允许用户上传图片,视频,头像和许多其他类型的文件.向用户提供的功能越多,Web应用受到攻击的风险和机会就越大,这种功能会被恶意用户利用,获得到一个特定网站的权限,或危及服务器的可能性是非常高的.上传文件本身没有错,问题与漏洞在于服务器怎么处理上传的文件. 0x0

上传漏洞分类

/*以下例子多来自<web安全深度剖析>,权当记录.*/ 一.web容器解析漏洞 IIS解析漏洞(V6.0): 1.当建立*.asa  或*.asp的文件夹时,起目录下的任意文件IIS6.0都当做asp来解析,如下图: 2.当文件以*.asp;1.jpg命名时,IIS6.0同样会当做asp来解析,如下图: WebDav漏洞: 服务器开启WebDav扩展后,如果支持PUT.Move.Copy.Delete等方法,就可能存在安全隐患.测试步骤如下: 第一步,通过OPTIONS探测服务器支持的HTT

从零开始的linux 第十九章(mv命令详解)

从零开始的linux 第十九章 hello~~又到了一周一更新博客的时候啦~~这周51CTO成功将博客功能升级~~给我们带来了全新的体验~全新的界面~全新的视感~~不过,在编辑器上~小编还是习惯用原来的编辑器,感谢工作人员在内测时候广泛采纳用户的建议~对博客进行一次又一次的修改,嗯,最辛苦的还是我们的开发同志~~小编给你们以及所有员工打call~~ 那么,回归到这章内容,实际上,小编从这周是想拒绝更新的~~因为这么久过去了,小编虽然在一直给同学们讲课,但自己还没有写一篇有技术性的博客,但小编又没

菜鸟学Java(十九)——WEB项目测试好帮手,Maven+Jetty

做WEB开发,测试是一件很费时间的事情.所以我们就应该用更简单.更快捷的方式进行测试.今天就向大家介绍一个轻量级的容器--jetty.j今天说的etty是Maven的一个插件jetty-maven-plugin,与Maven配合起来使用非常的方便,它的配置也非常的简单,下面我们就看看它怎么用吧! 在pom.xml 文件的<project>标签下加入如下代码: <build> <plugins> <plugin> <groupId>org.mort

Android学习笔记二十九之SwipeRefreshLayout、RecyclerView和CardView

Android学习笔记二十九之SwipeRefreshLayout.RecyclerView和CardView 前面我们介绍了AlertDialog和几个常用的Dialog,ProgressDialog进度条提示框.DatePickerDialog日期选择对话框和TimePickerDialog时间选择对话框.这一节我们介绍几个新的API控件SwipeRefreshLayout.RecyclerView和CardView,这几个API控件都是google在Android5.0推出的.下面我们来学

每日算法之二十九:Search in Rotated Sorted Array

在一个经过旋转后的有序数组中查找一个目标元素. Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2). You are given a target value to search. If found in the array return its index, otherwise return -1.

【Unity 3D】学习笔记二十九:游戏实例——简单小地图制作

任何的学习,光看不练是学不好的.所以这次就总结回顾下怎么制作MMROPG类游戏中的小地图.在MMROPG类游戏里,主角在游戏世界里走动时,一般在屏幕右上角都会有一个区域来显示当前游戏场景的小地图.主角在游戏世界里走动,小地图里代表着主角的小标记也会随之移动.那怎么实现咧? 首先需要确定两个贴图,第一个是右上角的小地图背景贴图,应该是从Y轴俯视向下截取主角所在的位置大地图.第二个就是主角的位置大贴图.在本例中,因为没有学习unity地图制作,所以地图用一个面对象代替,主角用立方体代替,使用GUI来

二十九、linux常用命令(一)

vim是打开vim编辑器,别的编辑器还有vi(功能没有vim 强大),nano,emacs等等,感觉还是vim最强大,其次是vi,别的就要差一些了. 我听我们老师说,用图形界面本身已经会被高手笑了,如果打开一个gpedit或者kwrite那就废了......常用的命令 ls,列出当前目录下的文件,ls -l是列出详细信息,ls -a列出隐藏文件. cd,更改目录.clear,清屏命令.reset,重置终端. startx,启动图形界面.fdisk -l,查看硬盘分区. ps aux,列出系统进程

从零开始学ios开发(九):Swapping Views

这篇的内容是切换Views,也是上一篇中提到的第三种当iphone发生旋转后改变布局的方式,先回顾一下上一篇中提到的三种方式 1.使用Autosizing 2.写code 3.重新弄个View,替换原先的View 切换View,顾名思义就是在两个不同的View中间进行切换,那么我们至少需要有2个View,一个View展现当竖着(Portrait)拿iphone时的界面,另一个View展现当横着(Landscape)拿iphone是的界面,当我们旋转iphone时,就在这2个View之间进行切换,