CTFHub是一个不错的学习平台,这个平台也是前几天舍友推荐的,虽然里面的题目不复杂,但是模块清晰,很适合刚刚学习相关方面知识的伙伴。(大牛们就温故知新一下吧)
![](https://img.haomeiwen.com/i19702940/9eaff2afa0a87f62.png)
这几天题目也大概刷的差不多了,稍微整理一下吧。我挑了一个文件上传的模块,之前的几个模块像密码口令、sql注入中的题目都很常见,选择文件上传,是因为毕竟跟webshell联系比较紧密,在平时的一些实战中,上传的接口也一直是重中之重。博主还是想强调一下,我不是一个对ctf比较挚爱的小白哈哈哈,只是我觉得这个平台不错,题目思路对大家至少对我很有帮助和借鉴的意义,所以想分享给大家,如果有一些实战我还是特别愿意分享那些给大家看的,毕竟大家肯定都跟我一样喜欢真实、刺激的感受。
solving过程:
![](https://img.haomeiwen.com/i19702940/9628846d4537b75d.png)
Q1:无验证:
![](https://img.haomeiwen.com/i19702940/1bdc11f2ad42ca91.png)
上传一个一句话上去:
![](https://img.haomeiwen.com/i19702940/5fae472c420526cc.png)
蚁剑连一下:
![](https://img.haomeiwen.com/i19702940/e95dc758cf7e912b.png)
Q2:js前端验证
![](https://img.haomeiwen.com/i19702940/3d82897a249bace4.png)
既然是前端验证,看一下源码吧。
![](https://img.haomeiwen.com/i19702940/b8d23e5628f67aa0.png)
嗯这三个类型的文件是可以上传的:
![](https://img.haomeiwen.com/i19702940/24f2264d1875d1fa.png)
bp抓包改.php后缀为.jpg,放包,蚁剑连接:
![](https://img.haomeiwen.com/i19702940/5717794b93432945.png)
Q3:.htaccess
![](https://img.haomeiwen.com/i19702940/3ff6027426e8df38.png)
这个我之间没接触过,google了一下,原来也算是个解析漏洞吧:(下面为引用)
htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。
简单来说,就是我上传了一个.htaccess文件到服务器,那么服务器之后就会将特定格式的文件以php格式解析。
下面是这个.htaccess文件的内容(这里后面加的是 .jpg,也就说明将.jpg的文件当php解析)
![](https://img.haomeiwen.com/i19702940/a243f798b94e99ef.png)
这里不需要抓包改后缀,只需要先上传.htaccess文件,再上传.jgp格式的一句话就OK了。
注意:文件全名为.htaccess,不要手贱改成xx.htaccess,因为.htaccess是配置文件,不是你随便命名的。
上传之后连一下。
![](https://img.haomeiwen.com/i19702940/4d6f2c83089577e5.png)
Q4:MIME绕过:
![](https://img.haomeiwen.com/i19702940/c03b3ab3d140579b.png)
相信有很多人跟我一样,一开始是不知道MIME是什么东西,一下为解释:(引用)
MIME:客户端软件,区分不同种类的数据,例如web浏览器就是通过MIME类型来判断文件是GIF图片,还是可打印的PostScript文件。web服务器使用MIME来说明发送数据的种类, web客户端使用MIME来说明希望接收到的数据种类。
也就是服务端MIME类型检测是通过检查http包的Content-Type字段中的值来判断上传文件是否合法的。那就好办了,不管我上传什么类型的文件,我只要修改Content-Type字段来让检测通过就行了。
![](https://img.haomeiwen.com/i19702940/a6461c3c53a3a7bb.png)
上传,连蚁剑。
![](https://img.haomeiwen.com/i19702940/443815eae2418ed1.png)
Q5 00截断:
这是老朋友了,我觉得这篇博客关于00截断的总结挺不错的:http://www.admintony.com/%E5%85%B3%E4%BA%8E%E4%B8%8A%E4%BC%A0%E4%B8%AD%E7%9A%8400%E6%88%AA%E6%96%AD%E5%88%86%E6%9E%90.html
我一开始接触00截断,只是单纯的认为在文件名处进行截断,如xx.php%00.jpg,这样其实是不对的,提取的时候碰到%00就会认为字符串提取结束了,后面的.jpg就不会再提取,那样的效果还是等于上传了.php的文件,无法绕过。正确的做法还是数据包中必须有上传文件的path才行。结合上传路径+文件名,进行截断。
![](https://img.haomeiwen.com/i19702940/18d9c86656a926e4.png)
如上面的数据包,提供了road=,即上传路径。截断放包:
![](https://img.haomeiwen.com/i19702940/d2879c93ce6bf496.png)
蚁剑连接:
![](https://img.haomeiwen.com/i19702940/a561653e88e2891d.png)
Q6 双写绕过:
![](https://img.haomeiwen.com/i19702940/d64bf5023bdba245.png)
还以为什么多牛逼的东西..就是花式改后缀呗。
先看看源码:
![](https://img.haomeiwen.com/i19702940/042f486805215013.png)
有的时候看这些黑名单也是给自己以后修改后缀绕过提供一点建议哈哈哈哈,我一直认为黑名单验证机制永远是不安全的,而白名单相比较之下会好很多。
既然是提示了是双写绕过,那就用双写把:
抓包改下后缀。
![](https://img.haomeiwen.com/i19702940/dbe815d3fe976f9d.png)
蚁剑连接:
![](https://img.haomeiwen.com/i19702940/a4f3de73cde46044.png)
Q7:文件头检测
![](https://img.haomeiwen.com/i19702940/cf31b19d562048a0.png)
看了下源码,没有东西。
先上传一个正常jpg文件把:
![](https://img.haomeiwen.com/i19702940/92c17b95d0a7b1b7.png)
文件错误?一时刻没反应过来。
再试试直接上传一个php:
![](https://img.haomeiwen.com/i19702940/37e251e1f028d489.png)
意料之中,类型不正确,上面不是做过MIME验证么,学了就用改改Content-Type字段试试:
![](https://img.haomeiwen.com/i19702940/59ec50f29a541989.png)
放包:
![](https://img.haomeiwen.com/i19702940/0fa9b0842c12e066.png)
哈?又是文件错误。
绕过了后缀,但是还是绕不开检测,那应该就是对文件内容检测了。
既然这样有两种思路:第一个是先生成一个png图片,然后将一句话插进去;第二种思路抓包,然后在一句话前插入png格式头。
第一种的话给大家推荐一个自动生成图片一句话的工具吧:edjpgcom,操作方便,以后碰到一些解析漏洞的时候也能用得上。(后面会附上工具的压缩包)
我这里是自己生成了一个png文件,在最后插入了一句话。
![](https://img.haomeiwen.com/i19702940/92483daab89675fb.png)
按照上面的步骤走一下:
![](https://img.haomeiwen.com/i19702940/712c6cfc31e8500a.png)
上传成功。
访问看看吧:
![](https://img.haomeiwen.com/i19702940/c9075c0cefccf219.png)
what语法错误???
应该是图片内容复杂了,php检测到里面与一句话无关的内容有语法错误,服了。
那就再生成一个png把,内容不要复杂,最好就点一个黑点就Ok了。
重复上述操作:
![](https://img.haomeiwen.com/i19702940/ff64a932e7a7b0f1.png)
OK,可以看到上传成功了。
蚁剑连一下:
![](https://img.haomeiwen.com/i19702940/ccd0323a43efef4c.png)
几个文件上传的题目就整理好了,过几天准备装一下Upload-Labs,再就文件上传做一些题目进行一些总结。这几天一方面除了学校的网课、作业等等,这个月的工作业务会停一下,正好准备重拾一下docker的相关知识,为培训系统的漏洞环境镜像做一下准备把,希望自己能够坚持。
网友评论