文件上传 第四十天
文件头检测
每个图片文件都是有个特定的16进制内容,或者
10进制内容,jpg,gif、png、的文件头为下图
应用php函数getimagesize(),获取文章图片及内容,
通过hex16进制软件,修改内部代码,可以通过文件头验证
gif文件最小,可以只留请求头,
jpg和png需要多留一些,防止函数识别不出图片类型
文件内容检测
对文件的检测存在于开头与结尾的相互照应,只有相互照应才能识别出图片,多余的代码被删除,故而,php代码需要写在开头和结尾照应的合适的地方
文件的二次渲染
先上传正常的图片,下载后做对比,看不改变的位置,然后做修改,可以上传文件,
注意的一点是:要算好一句话木马所需要的长度,不然会出问题
图片码的生成
windows 生成方式:
copy 1.jpg/b 1.txt/a hack.jpg
linux 生成方式
用>>重定向
cat 1.txt>>1.jpg
文件后缀检测
文件后缀的核心是 后缀,
绕过的方法是
黑名单
上传 .htaccess 利用apache特性,让目录下的任意文件解析为php程序
上传 a.php::SDATA.jpghu windows系统特性 .jpg会被截断,剩下a.php
上传 a.php:.jpg windows系统特性 .jpg会被截断,最后剩下a.php 但文件为空
上传a.php. windows系统特性,.不会保存,最后剩下a.php
上传a.php空格 windows系统特性,空格不会保存,最后剩下a.php
上传 a.php windows系统特性 不区分大小写,最后能够访问到a.php
截断上传 php5.3.4以下,%00可以截断后缀,/upload/a.php%00a.jpg 最后会保存为/upload/a.php
白名单
上传 a.php::$DATA.jpg windows系统特性,.jpg会被截断,最后剩下a.php
上传 a.php:.jpg windows系统特性,.jpg会被截断,最后剩下a.php 但文件为空
**** 以上绕过方式是否进行重命名操作,如果进行重命名操作,绕过方式基本没戏
上传 .htaccess
在apache中,如果网站目录下,存在一个.htaccess文件,那么,apache就会有限解析文件中的配置,如果我们设置一些参数,比如将aabc后缀文件当作php程序执行
如此要考虑,此上传只能在黑名单中进行攻击,如果网站上对上传文件进行重命名,也无法利用
上传 a.php::$DATA.jpg
在windows系统中,如果文件名字中,包含::$DATA,那么,在进行保存时,就会把
::$DATA和之后的内容丢弃,只留下前面的内容,作为文件的名字
这个在黑名单和白名单中,都可以利用,但是必须是windows系统,同时如果网站对上传文件进行重命名,也无法利用
上传 a.php. a.php空格 a.pHp
在windows系统中,如果文件名字最后是一个空格,或者是一个.,然后文件在保存时,就会把.和空格去电,最后会保留一个webshell后缀。
能在黑名单中进行攻击,必须是windows系统
截断:
php5.3.4以下
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 zhumeng512@qq.com
文章标题:文件上传 第四十天
本文作者:弈少
发布时间:2019-09-14, 14:42:57
最后更新:2019-09-15, 22:23:30
原始链接:http://yoursite.com/2019/09/14/北京渗透测试第四十天 20190912/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。