首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CTF从入门到提升(十)文件上传

CTF从入门到提升(十)文件上传

原创
作者头像
牛油果
修改2019-09-05 14:18:00
1.5K0
修改2019-09-05 14:18:00
举报
  • ​​服务端校验——白名单

白名单和上一节讲的黑名单的区别在哪里?黑名单是未经许可非法用户禁止入内,我禁止某些人入内,大部分人是可以进去的。白名单是未经允许禁止入内,只有允许的人才能进入,对应的文件上传就是只有合法文件才能上传。解析的时候我们为什么要文件合法?因为中间件能够解析,只允许不能被解释的文件且只符合当前业务的文件才能够上传。比如头像png、jpg、gif,不需要其他的文件名,做好限制极大地杜绝安全问题。

从规则上来讲白名单是比较难突破的,除非类似%00截断,而且这种截断也要看具体代码逻辑才能够实现,从代码层面去做突破略难。简单的题目有配合Apache的解析漏洞以及其他漏洞。像多层压缩包嵌套、或者本身有缺陷产生的文件上传问题等等后面都会分享,本次内容为配合Apache的解析缺陷。

我使用的环境一般是放在Linux下Apache用的比较多,包括nginx 和 IIS 都存在这种解析漏洞的。所以白名单突破需要配合的就是中间件的缺陷。

具体环境操作如下:

上传.php禁用js,非法文件禁止上传。开启bp那么去传一个 jpg文件,

提示非法文件禁止上传。

服务端校验——文件内容头校验

内容头校验涉及到一些函数,例如对图像处理的函数。比如getimagesize获取图像大小。

如果不是指定的图像、有效的图像,就会产生一条false,这个函数可以判断这个文件是不是一个图片。

新建一个文件:

很多文件有对应的文件格式:

这些函数是通过文件头来做判断的。如果可以把这个文件头给伪造出来,基本可以对它实现欺骗成功绕过。

竞争上传

竞争上传是逻辑上的错误文件上传成功后,正常逻辑是后端代码一直在运行检测,合法就可以保存,不合法直接删掉。

在远程服务器上写入a.php 

过5秒钟就删掉,会形成产生一个临时文件的,趁临时文件没有被删掉赶紧访问。这种题目对服务器的性能影响比较大。

  • 举栗子

上传php 文件,进行访问,显示查不到。

我们可以考虑让刚上传的文件去生成一个新的文件产生新的需要。

第一个是文件名,下面是文件的内容,可以content写入文件。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档