靶机来源:https://buuoj.cn/challenges#Upload-Labs-Linux
第一题
我们先判断问题来自于哪里,由下图可知,主要检验来源于前端JS对文件类型的过滤  
可以得出主要问题来自于前端JS判断,这里我们只需要绕过JS的检测即可上传php脚本 方法1: 通过前端禁用JS达到上传的目的,我这里用的是谷歌内核的Edge游览器,直接按F12然后再按F1滑倒下方禁用JS脚本,然后上传自己的PHP小马或者大马即可  方式2 通过bp进行改包,我们先将自己的马修改为可上传的文件类型(这里的前提先将游览器与bp的代理配置好,我游览器的插件用的是switchyomega,用的是默认的8080端口),我这里用的是jpg格式的文件,然后使用bp进行抓包,拦截到发送包后,我们直接将抓到的1.jpg文件修改为1.php,然后放行,接着将返回的地址使用蚁剑进行连接
第二题
还是先进行直接上传一个脚本进行判断,是哪里的问题,这里提示了文件类型不正确,典型的mime问题,我们可以直接使用bp进行mime绕过,这里我上传一个php类型的小马,使用bp抓包,拦截内容并修改content-type内容为image/jpeg,然后进行放包,就成功将小马上传到了服务器  
第三题
首先,判断问题,解决问题,如图,上传禁止了部分文件的后缀,但我们却可以利用上传其他文件后缀达到相同的效果,如下第二张图(截图于第四题的index文件),因为题目用的是php站点,所以我们使用其他类型的php格式文件替代,我这里使用的是phtml格式上传,复制图片的链接,打开蚁剑,测试连接 
  
第四题
这题对大部分文件后缀类型进行了过滤, 但没有对.htaccess文件过滤,并且不像第三题一样会对文件进行重命名,所以可能存在.htaccess解析漏洞。 这里我们直接创建一个.htaccess文件并将内容写入文件中
SetHandler application/x-httpd-php
这个主要是将我们的文件都当作php文件进行执行,这样我们就可以通过上传图片马解析,当作php脚本文件执行 Windows无法直接桌面命名.htaccess,使用命令行命名,rename htaccess .htaccess ,然后进行上传文件,上传.htaccess文件后,我们再将我们的一句话脚本重命名为jpg格式文件进行上传,复制返回图片地址,接着直接用蚁剑进行连接即可
第五题
打开由右上角源码审计得出,没有对后缀转换为小写,也没有对大写的PHP后缀进行过滤,所以这里我们可以试试使用大写的后缀进行上传测试 
第六题
源码审计得出,没有对文件名进行前后缀去空处理,这里我们可以使用再后缀上添加空格来进行上传。这里我们使用bp进行抓包,在上传文件时,给文件后缀添加上空格,即可上传成功 
第七题
这题是因为代码没有对后缀去除点而导致的,我们可以在上题的基础上,把改包的空格换成.即可上传成功 
第八题
和前几题类似,没有对::$DATA 进行过滤导致的问题,我们只需要将改包的内容换成::$DATA 即可 (这个问题仅对Windows有效,Windows服务器会把结尾的data后的数据当作文件流处理,因为这题我的靶机服务器是Linux,从而这题无了)
第九题
这题通过源码判断首先会对文件名进行去除前后的空格,然后去除文件后缀的所有点,最后再进行一次首尾去空处理,所以这里我们可以使用点+空格+点形式来进行绕过,这里之所以要在中间位置加一个空格,是因为有一步操作是对后缀的所有点进行去除,所以我们使用空格进行隔断,剩下的操作就和前几道题类似了
第十题
这一题,我们发现,可以直接上传php文件,没有进行任何的过滤,但却发现我们本来上传的是1.php文件,上传后却变成了1.,所以得出,这里是直接将php这个字符串进行了去除处理,所以我们这里使用双写绕过,将文件名进行改造1.pphphp,这样在他进行去除php这个字符串的时候,就能将剩下的字符串进行组合,形成新的php后缀  
第十一题~十二题
我的靶机PHP版本达到了7.2.21,这个问题仅正对5.3.4以下版本,这两道题%00截断无法测试,所以跳过,大致为保存路径后添加上%00进行绕过
第十三题~第十五题
这题考查的是文件包含漏洞+图片马,按题目要求,制作一张图片马,选用一张正常的图片1.jpg和一张包含马的图片格式文件2.jpg,进行合并
copy 1.jpg /b + 2.jpg /a shell.jpg
合并后进行直接上传,然后我们使用他给的地址,进行组合访问给的图片,使用图片进行蚁剑连接即可 
|