在刷题过程中,我准备用自己搭的服务器写一个php文件来反弹shell,但是我的nginx服务竟然不能解析php文件了,访问文件,只是把文件下载下来,真是让人头大。在网上找了好多方法都没能解决问题,最后还是自己摸索出来了。
首先,要解析php文件,就需要在nginx的配置文件中开启(注意:有的直接就在nginx.conf中,有的在sites-enabled/default中),就是去掉这段代码注释:
#location ~ \.php$ {
# include snippets/fastcgi-php.conf;
#
# # With php-fpm (or other unix sockets):
# fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
# # With php-cgi (or other tcp sockets):
# fastcgi_pass 127.0.0.1:9000;
#}
然后第一个坑就来了,在你的/etc/php/版本号/fpm/pool.d文件夹下,配置文件www.conf中,应该特别关注listen这一行:

如果是这种情况,那么fastcgi_pass unix:/run/php/php7.4-fpm.sock;
,如果是listen=127.0.0.1:9000
那么fastcgi_pass 127.0.0.1:9000;
我以为这里就行了,但是又给我报了不允许访问的错!!!!
这里就是由于用户不匹配导致的,我们看到在www.conf中用户为www-data,所以我们必须确保nginx的用户也要为www-data:

以上问题解决后,没有给我再报error了,但是!但是!!!!现在访问文件直接就报file not found了,真是逆天!!!!这里主要是fastcgi_param
参数的问题,我们要做的是将:fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
改为fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
,让当前请求在root指令中指定值。这里也要注意,有的是在niginx.conf文件中,但是有的是在fastcgi.conf
文件中。终于完结撒花!!!!这个问题也是搞了一整天,搞得人心烦意乱的,解决问题还是得沉下心来吧。
Comments | NOTHING