一、实验环境Web 集成环境phpStudy 2018靶场DVWA漏洞练习平台抓包工具BurpSuite。二、%00 空字节截断实验设置 DVWA 安全等级进入 DVWA将安全等级设置为Medium1. 准备测试文件新建文件yourname.php文件内容如下?phpphpinfo();?为了绕过简单的后缀检测可以将文件名修改为yourname.php.jpg2. 使用 Burp Suite 抓取上传请求打开 Burp Suite开启拦截。在 DVWA File Upload 页面选择文件yourname.php.jpg点击Upload。2. 修改文件名在 Burp Suite 中将文件名yourname.php.jpg修改为yourname.php .jpg注意php 和 .jpg 中间添加了一个空格这样做的目的是方便在 Hex 视图中定位该空格。3. 在 Hex 视图中插入空字节切换到 Burp Suite 的 Hex 视图找到刚才添加的空格。空格对应的十六进制值是20将20修改为00。截断方法一还可以通过下述方法实现截断截断方法二4. 发送修改后的请求修改完成后点击Forward放行请求将数据包发送给服务器。5. 验证 %00 截断结果尝试访问http://127.0.0.1/dvwa/hackable/uploads/yourname.php结果分析利用%00空字节截断漏洞通过编码实现文件上传。三、.htaccess 文件上传攻击实验设置 DVWA 安全等级为High1. 检查 Apache 配置打开 phpStudy 中 Apache 配置文件一般路径类似phpStudy\PHPTutorial\Apache\conf\httpd.conf查找AllowOverride确保 DVWA 所在目录或网站根目录相关配置为AllowOverrideAll如果配置为AllowOverrideNone则 .htaccess 文件不会生效。修改后需要重启 Apache。2. 准备 .htaccess 文件在本地新建文件文件名为.htaccess文件内容如下AddType application/x-httpd-php .jpgAddHandler application/x-httpd-php .jpg其作用是让 Apache 尝试将 .jpg 文件作为 PHP 文件解析。3. 上传 .htaccess 文件进入 DVWA 左侧菜单File Upload先设置级别为Low选择本地 .htaccess 文件点击上传再切换级别为High。4. 准备测试文件准备图片马命名为yourname.jpg文件内容如下GIF89a?phpphpinfo();?在 DVWA 的 File Upload 页面选择test.jpg点击上传。5 验证 .htaccess 攻击结果在浏览器中访问http://127.0.0.1/dvwa/hackable/uploads/yourname.jpg访问结果分析访问http://127.0.0.1/dvwa/hackable/uploads/yourname.jpg成功显示phpinfo()页面.jpg文件被当作PHP执行。原因分析.htaccess生效Apache配置AllowOverride All允许目录级配置覆盖上传的.htaccess被加载。解析规则被篡改文件中AddType/AddHandler指令强制Apache将.jpg当作PHP解析。图片马可执行yourname.jpg包含GIF89a文件头绕过图片检测内嵌?php phpinfo();?被解析执行。High等级绕过High仅校验文件头与后缀未限制.htaccess上传实现绕过。五、实验小结防御措施Apache 配置 AllowOverride None禁止加载 .htaccess。上传目录设置为不可执行分离上传与脚本解析目录。严格校验文件后缀、MIME 类型、文件内容重命名上传文件。仅允许白名单后缀禁用危险脚本类型上传。