pass-02
进入关卡,查看提示和源码,根据源代码我们可以发现,这一关是对文件类型验证,也就是验证MIME信息。
接下来我们进行文件上传,使用burpsuit抓包,将Content-Type修改为允许上传的类型(image/jpeg、image/png、image/gif)三选一。
修改完成后发送成功,文件已经上传
访问一下文件所在路径
Pass-03
查看提示和源代码,我们可以发现是一个黑名单验证,它定义了不可以上传的文件后缀,但是它的黑名单定义是不完整的,我们是可以通过修改其它文件后缀实现绕过的,用.phtml .phps .php5 .pht进行绕过。这里我们直接上传一个.php5文件
用burpsuite抓取数据包,发现已经成功上传。因为上传上去的文件名会改变,但是在数据包中有回显(实战中可能没有),所以我们还是可以访问的。
访问一下上传文件
当发现访问的时候是空白页时,要在apache的httpd.conf中有如下配置代码:AddType application/x-httpd-php .php .phtml .phps .php5 .pht,如果没有是无法解析php5代码的,访问的时候就是一个空白页。
Pass-04
查看提示和源码,发现禁止上传的文件有很多
我们尝试上传一个.htaccess配置文件,将shell.jpg图片当作php代码进行解析。
我们首先创建一个.htaccess文件,里面写上代码
<FilesMatch "shell.jpg">
SetHandler application/x-httpd-php
这串代码的意思是如果文件中有一个shell.jpg的文件,它就会被解析为.php。我们把.htaccess文件上传。
这里注意:
.htaccess文件不能起名字,他就是.htaccess文件,如果你将他改为4.htaccess是不可以的,它就会无法解析。在实战中有可能上传上去这个文件会被自动重命名,被重命名了就不可以了。
上传成功后,我们把图片用编辑工具打开,里面写上php代码。再进行上传这个新的shell.jpg文件。
上传完成后我们访问这个shell.jpg文件
Pass-05
查看提示和源码,发现代码中对于收尾去空,删除末尾的点,去除字符串::$DATA,转换为小写这些东西只是验证了一次,它并没有进行循环验证。
我们的绕过思路就是在数据包中把.php后缀名改为.php. .
在文件上传的过程中首先它发现有一个点,这时它会把这个.去掉,又发现有一个空格,也会把空格去掉,这时文件后缀还有一个点,也就是.php. 由于它只是验证一次,所以不会再去掉我们的点,这时就可以上传成功,也可以解析成功。如下图:
上传成功。