前言 tips: *如果我们在使用蚁剑发现了返回值为空说明一句话木马语法错误,如果我们发现返回值是一串乱码 则是链接地址填写错误*
先上传php文件尝试一下,提示只能上传\jpgpng\gif的文件,并且是在前端过滤。

做一个图片马

burp抓包改包,修改为php

上传成功


1、JS前端绕过修改后缀也是可行的 2、修改mime类型

Content-Type: application/octet-stream修改为image/jpeg


上传成功

首先要在httpd.conf中配置 因为默认是未启用的

随便上传一个文件查看提示不允许上传asp.aspx.php.jsp

有很多类型可以绕过这几种 php3 php4 php5 phtml PHphpp





适用条件 php版本 5.6一下 未开启nts htaccess”文件或者称为分布式配置文件,它是 Apache 服务器中的配置文件,提供了针对每个目录设置不同的配置的方法。有些服务器在上传认证时没有拦截 .htaccess 文件上传,就会造成恶意用户利用上传 .htaccess 文件解析漏洞,来绕过验证进行上传 WEBShell,从而达到控制网站服务器的目的。

将其进行上传,因为 .htaccess 是 apache 服务器中的一个配置文件,不在上传的文件的黑名单之内,所以 .htaccess 文件是可以上传成功。

再上传图片马,由于 .htaccess 文件上传之后就生效了,此时所有的 png 文件都会以 php 文件的形式被解析,即可进行连接。

自 PHP 5.3.0 起,PHP 支持基于每个目录的 .htaccess 风格的INI文件,此类文件仅被 CGI/FastCGI SAPI 处理。除了主 php.ini 之外,PHP 还会在每个目录下扫描INI文件,从被执行的 PHP 文件所在目录开始一直上升到 web 根目录。 使用 user.ini 文件进行文件上传时,需要服务器脚本语言为 PHP,对应目录下面有可执行的php文件,且服务器使用 CGI/FastCGI 模式。.user.ini.它比 .htaccess 用的更广,不管是nginx/apache/IIS,只要是以 fastcgi 运行的 php 都可以用这个方法。(user.ini文件利用还没搞明白 我再研究一下)
直接上传shell文件,修改为shell.php. .

上传成功

此方法只适用于windous,而linux是区分大小写的,不能正常执行
.php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".htaccess",".ini"
pHP \PHP \Php \pHP3 \PHP3 \Php3 种类比较多 自行发挥


上传shell.php后加空格绕过


上传shell.php后加.


::$data的作用是将webshell.php当做字符流处理,所以对其后缀名检测不成功。


. .绕过

phphpp\Phphpp等等 自行发挥

本题考查%00截断,相当于复现CVE-2006-7243,所以需将php版本设置为PHP 5.3.4以下, 并关闭`magic_quotes_gpc`选项。
php.ini

- 可见保存的路径也可以由用户所控制,GET类型的传参。因此在保存路径中修改为:
- save_path=../upload/test.php%00



解码以后变成不可见字符
