文件上传之upload-labs
本文为在学习文件上传后所整理的笔记 。
upload-labs项目地址:https://github.com/c0ny1/upload-labs
@pass-01 前端js验证
方法1:将文件后缀改为白名单中的后缀然后利用bp抓包修改为php方法2:f12查看源代码选择其中和上传文件有关的代码复制到本地生成html格式点击进行上传。要注意生成本地html时需要加上发送地址
即action=‘http://192.168.43.232/upload-labs-master/Pass-01/index.php’
所以最终生成的代码为:
<form enctype="multipart/form-data" method="post" action='http://192.168.43.232/upload-labs-master/Pass-01/index.php' onsubmit="return checkFile()">
<p>请选择要上传的图片:</p>
<p>
<input class="input_file" type="file" name="upload_file">
<input class="button" type="submit" name="submit" value="上传">
</p>
</form>
接着双击上传一句话木马即可
但是很尴尬的是用蚁剑连接时竟然显示失败,百度了很久才发现
原来是编码问题。。。。关于这个知识点后续会深入研究
@pass-02 MIME验证
上传一句话抓包分析:
将content-type内容改为image/jpeg即可成功绕过,蚁剑连接成功
@pass-03 php3,phtml等后缀考察
***若使用phpstudy搭建环境,则前提是配置文件httpd.conf中允许将php3,php4,phtml默认为php文件
将一句话木马php后缀改为.phtml等即可
@pass-04 .htaccess 考察
htaccess是apache服务器中的分布式配置文件,可以覆盖apache的配置
例如:将apache中将.png文件当作php文件解析方法:
在cmd中输入copy con .htaccess
回车后输入AddType application/x-httpd-php .png
按下ctrl+z即可结束编辑,创建.htaccess文件成功 。在第四关中先上传写好的.htaccess文件,再上传一句话木马将后缀改为.png即可。蚁剑正常连接
@pass-06 大小写转换
查看源代码发现并没有限制大小写验证,所以将后缀php改为Php即可
@pass-07 变异解析
分析源代码看见并没有限制首位去空,则在php后面加上空格即可上传成功
pass-08 变异解析
查看提示:本pass禁止上传所有可以解析的后缀!
查看源码:可以看到没有对文件最后的点进行过滤,则在上传时抓包在.php末尾加上一个点即可成功绕过。
@pass-09 ::$DATA
上传一句话时直接抓包在文件名最后加上::$DATA 即可,蚁剑连接成功。
@pass-10
分析源代码:
分析知道过滤基本完整,但是却出现了一个问题,每种过滤只有一次,没有采用递归的方法过滤,所以我们可以使用点空格点的形式绕过
strrchr() 函数查找字符串在另一个字符串中最后一次出现的位置,并返回从该位置到字符串结尾的所有字符。
即上传时抓包将文件名改为“1.php. .”,即可绕过
@pass-11
trim() 函数移除字符串两侧的空白字符或其他预定义字符
str_ireplace 函数将文件名中出现上述黑名单中的后缀替换为空,所以便可以采用双写绕过的方法,改后缀为phphpp。蚁剑可成功连接
@pass-12
环境条件:php版本小于5.3.4,php的magic_quotes_gpc为OFF状态
00截断原理:在url中%00表示ascll码中的0 ,而ascii中0作为特殊字符保留,表示字符串结束,所以当url中出现%00时就会认为读取已结束
首先把php.php的后缀改为jpg等白名单中的格式,这样才能上传,接着可以看到最上方为上传地址,如果在upload/后面加上1.php%00则不会生成新的文件名,上传路径在upload/1.php处便被截断。
@passs-13 00截断
同样是00截断,只不过这次从get请求变成了post请求
同12关一样,在路径upload处做修改,但是post不会像get对%00进行自动解码,所以需要在bp的2进制文件中进行修改。
将25换成00即可上传成功
@passs-14 图片马解析
制作图片马方法 :copy a.jpg /b +1.php /a 123.jpg
上传123.jpg后输入http://192.168.73.146/upload-labs-master/include.php?file=upload/9720210327150133.jpg查看图片马是否正常,如要利用,需要结合文件包含漏洞
@pass-15
和14关方法完全一样
@pass-16
也是利用图片马,只不过判断图片的函数变了
@passs-17
对图片进行二次渲染,方法类似,具体可以参考这篇文章https://xz.aliyun.com/t/2657#toc-13
未完待续
如有错误,请多指出。