文件上传主要是配合一些漏洞的利用,普遍意义上的文件上传是指将信息从个人计算机传送至中央计算机,也就是我们所说的远程计算机,对站点来说,就是传到运行网站的服务器上。一般网站都有自己的逻辑,比如在网站的注册页面,你想要上传个头像,网站只需要你上传头像,而不是传其他类型的文件。
CTF上传文件的目的是get shell,我们最终目的是拿到题目的flag,如果说存在一个上传的地方,很有可能它的目的就是通过上传的方式作为辅助或最终的方式去get shell。 上传文件会做一些防护来我们进行干扰,所以需要掌握常见的文件上传的安全检测方式。针对文件上传检测的方式如何做一个绕过?
客户端校验——JavaScript
首先来看一下最简单的客户端校验,文件上传是文件从本地到传输到远程服务器,中间经过了三个步骤,在你的客户端(自己电脑)本身做一个文件检测,或者文件传到后端服务器之后,在后端服务器上对文件做检测,简单的就是客户端校验JavaScript校验。文件是在网页做上传,所以javascript就会在你的浏览器上运行。这里有一些js代码及注释,方便大家对文件作出判断:
校验逻辑尽管很复杂,如果它的代码无法运行这个检测是不是就没有意义了可以直接绕过。
- 禁用js
比如说我上传一个文件,执行后系统提示: