php字符串函数:
strrchr函数:
echo strrchr("I love Shanghai!","Shanghai");
查找字符串在另一个字符串中最后一次出现的位置,并返回从该位置到字符串结尾的所有字符。
strtolower函数:
将字符串中的字母全部转换为小写
str_ireplace函数:
替换字符串
$file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA
trim函数:
首尾去除空格
trim($file_ext)
第一关:绕过前端JS限制
漏洞概要:只在网页前端JS脚本中判断文件类型,后端php没有做任何处理
思路1:
绕过前端JS即可,关键是这个action的页面
通过上传一张正常的图片,抓包获取post的目标php文件的路径
思路2:最快的方法是先上传一个后缀为Jpg的一句话木马,通过burp抓包修改后缀为php即可
第二关:修改MIME类型
漏洞概要:后端php只对上传来的文件Content-type做了判断
思路:修改MIME类型为image/jpeg即可绕过上传
第三关:黑名单绕过
漏洞概要:黑名单过滤的方式及其不安全,容易出现没有过滤全面的后缀导致文件被php解析运行
思路:批量fuzz后缀名上传文件,比如.cer,phtml,等等偏僻的后缀都有可能被解析运行,这里靶站是用phpstudy环境搭建的,默认是不会解析php3和phtml后缀的,需要添加才能部署完整的第三关环境
php可解析的文件名后缀在httpd.confi配置文件中标注
AddType application/x-httpd-php .php .phtml .php3 .sadphp