这是一段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
如上有的代码是判断头文件 是不是图片 所以我们可以在底部插入木马
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。