这个星期学习了文件上传漏洞,为了更好的理解他,尝试做了一些题目。记录一下~~~嘻嘻
目录
Pass-01(js前端绕过)
第一步,尝试上传一句话木马并查看流量,发现没有流量而且文件被过滤了,应该是客户端过滤
第二步,在设置中关闭js再次上传,借此绕过前端的过滤,重新上传,发现上传成功
第三步,查看打开上传文件,查看源码,发现不能查看源码,代表文件已经被解析了,用蚁剑连接得到flag
Pass-02(MIME文件头)
第一步,尝试上传1.php,并查看是否有流量,发现不是前端过滤,尝试修改后缀发现php3,php5,phtml都不行
第二步,猜测是MIME,修改Content-Type为image/jpeg,发现文件上传成功
第三步,查看上传文件的页码源码,发现没有内容表示文件被解析了,用蚁剑连接得到flag
Pass-03(后端后缀绕过)
第一步,上传文件并判断是否为前端过滤,发现并不是,要求不能含有.php
第二步,尝试修改后缀绕过,发现为php3时可以成功上传
第三步,发现文件被解析后用蚁剑连接
Pass-04 (.htassess)
第一步,上传文件并排除前端绕过,回显表示不允许php文件上传
第二步,尝试修改后缀发现当后缀为jpg时文件上传成功
第三步,查看上传文件的页面源码,发现有内容,表示文件没有被解析
第四步,先上传.htaccess文件,在上传1.jpg,就会发现1.jpg被解析了,用蚁剑连接
SetHandler application/x-httpd-php
Pass-05 (.user.ini)
提示表示上传目录下存在readme.php,我们可以上传.user.ini将1.jpg包含在readme.php内,当readme.php运行时也运行1.php
先上传.user.ini
auto_prepend_file=1.jpg
再上传1.jpg
<?php @eval($_POST['wmm']);?>
用蚁剑连接readme.php
Pass-06(大小绕过)
尝试了各种方法没想到居然是大小写绕过
Pass-07(空格绕过)
尝试了各种方法发现居然是空格绕过,观察源码与前几题的差别,发现没有给首尾去空
Pass-08(文件尾加.绕过)
看了网页源码发现没有删除文件末尾的点
Pass-09(window下的::$DATA)
这关的重点是没有过滤::$DATA,在window系统下如果上传文件尾后加上::$DATA会把上传文件当作数据流处理,不会过滤后缀,但是会保存为文件
查看upload文件夹发现多了一个php文件,用蚁剑连接
Pass-10(. .绕过)
Pass-11(双写绕过)
上传1.php发现上传成功,但是上传为1.,过滤了php,上传的文件也没有被解析
猜测替换了php为空,双写绕过,上传1.pphphp,发现上传成功 ,而且被解析了
Pass-12(白名单和00截断)
上传1.jpg发现上传后网址会多一个斜杠,应该是拼接
查看了源码之后发现save_path动态传参,传入参数为./upload/1.php%00,用%00截断
Pass-13
和前一题类似,用POST传参