一、分析源代码
可以看出这一关仍然是黑名单验证,但是它禁止了更多的后缀。像php3,php4这类后缀也被加入了黑名单,第三关的方法在这里显然就失效了。那么我们想一想,既然配置文件中存在将php3当作php来执行的功能,那么是否也存在将jpg、png这种后缀名当成php来执行的功能呢?答案是有的。
二、解题思路
这个配置文件就是.htaccess文件。概述来说,htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。
1.AddType 指令
AddType application/x-httpd-php .html .htm .txt
此行配置是让.html、.htm 和.txt 后缀的文件都被当作 PHP 文件解析。
2.AddHandler指令
AddHandler application/x-httpd-php .html .htm
此行配置是让.html 和.htm 后缀的文件由 PHP 解析器处理。
1和2两个指令的区别是:
AddType 确保文件被正确识别为 PHP 类型。AddHandler 确保 PHP 文件被解析。
3.SetHandler指令
SetHandler application/x-httpd-php
此行配置是让所有文件都当作PHP文件解析。
另外,.htaccess文件提供了针对每个目录改变配置的方法,即在一个特定的目录中放置一个包含指令的文件,其中的指令作用于此目录及其所有子目录。
也就是说,我们可以创建一个.htaccess文件,并写入SetHandler指令,将其上传到服务器保存上传文件的目录,然后上传修改成.jpg后缀的一句话木马。两个文件保存在同一目录下,.jpg就会被当作.php解析,这就是本关的通关思路。
需要注意的是,.htaccess文件可能会处于未启用状态,需要进入httpd.conf配置文件中将其启用。在httpd.conf配置文件中,AllowOverride none表示未启用状态,AllowOverride all则表示启用状态。
三、解题步骤
1.启用.htaccess文件
进入httpd.conf配置文件,将none修改为all并保存。
2.编辑.htaccess配置文件
在桌面创建一个txt文件,写入SetHandler application/x-httpd-php指令,保存并重命令为.htaccess。
将.htaccess文件进行上传,其成功被保存在upload目录中,那么此目录中的所有文件将被当作php解析。
3.上传一句话木马并验证
将一句话木马的文件后缀改成jpg再上传,显示上传成功。
测试木马是否能被当作php解析,结果显示成功。