CTFhub技能树之文件上传
无验证
没什么好说的,直接传
前端验证
很明显是前端js阻止了php文件上传
F12找到验证,删除成功上传
返回了路径
蚁剑连接拿到flag
.htaccess
F12可以看到基本上对php\php5之类的一系列后缀都做了禁用
标题也告诉了我们,改变.htaccess规则,即上传对应的图片马,解析成php文件执行一句话木马进行连接。
将.htaccess文件编辑如下,将任何文件解析成php
SetHandler application/x-httpd-php
抓包,修改上传
上传成功
接下来上传一句话的图片木马
图片马制作,在同一目录下准备好一句话木马和一张图片,然后制作如下
/b 表示一个二进制文件
/a 表示一个ASCII文本文件
+ 表示将多个文件合并成一个文件
这里用第一种/b,/a会无法解析,可能是不支持解析ascll,可以尝试一下上传之后访问对应的图片地址会报错。
然后我们上传图片马,上传成功,返回路径
/upload/shellup.jpg
可以先打开这个路径下的jpg文件查看一下,这里是上图的第二种最简便的制作马,能成功解析
蚁剑连接拿到flag
头文件检测
限制了白名单,对文件的头部进行检测,只允许上传jepg、jpg、gif、png
头文件检测,直接上传刚刚的图片马,burp拦截后把后缀改了就可了
发现报错,文件错误,这里制作一张简单的png文件,再burp拦截时手动加上一句话木马,修改后缀为php
成功上传
返回了路径
蚁剑连接失败
估计是图片的内容太过复杂很多符号引起了错误
输入中出现意外字符:“”(ASCII=14)state=0,位于/var/www/html/upload/123.php的第12行
再上传一下,把图片掏空,只留一个头和一句话木马
这下应该没错了
蚁剑成功连接
拿到flag
MIME绕过
修改验证模块即可上传
这里解释一下MIME-Type:
MIME(multipurpose Internet mail extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。
实际上验证模块就是Content-Type: image/png 这一部分
直接上传一个php,修改为png或者其他图片即可绕过
蚁剑连接拿到flag
00截断
在php5.2版本存在的00截断,在road参数后面加上文件名再用%00截断就会上传成一个php文件,从而绕过
蚁剑连接拿到flag
双写后缀
先传一个php发现能上传,但是返回后会将php全部去除,这好办,如题目,双写后缀
先来个shell.phpp,发现只剩下个p,找到规律去多重发几次,得到完整的文件即可
例如 shell.pphpph
然后蚁剑连接拿到flag
总结
文件上传的利用姿势有很多,可以多方位去思考
至此,技能书上文件上传部分有的环境复现完了,持续跟新!