搭建文件上传和爆破综合题的出题心得

搭建文件上传和爆破综合题的出题心得

由于网上提供的都是nginx和mysql加上php的组合, 所以我也只能参考这些去进行修改, 来符合我需要得到的预期结果

问题一 .首页面无法访问(无法连接数据库)

1
ERROR: Could not connect. SQLSTATE[HY000] [2002] Connection refused

根据报错信息就是连接数据库的问题, 其实解决方法很简单

前提条件是docker内部mysql正常启动但是web页面不正常

这个主要原因是在构建时少添加了一些东西

也就是

1
sed -i 's/skip-network/#skip-network/' /etc/my.cnf.d/mariadb-server.cnf

这句话可以让mysql服务被所有访问开启外部接口, 只需要在dockerfile中加上这句话即可

问题二. 在上传除了php之外的其他文件时出现了Access denied.

首先前提条件是你进到docker中看看文件所有者还有是否所有人可读

发现明明都可读但是除了php都无法正确加载, 百度了半天发现是需要配置nginx的静态处理,来处理一些文件

1
2
3
4
5
6
7
8
server {
...
location ~* \.(jpg|jpeg|gif|png)$ {
expires max;
log_not_found off;
}
...
}

但是我是在出题啊, 静态页面无所谓那动态的怎么办

当然可以办,还是在nginx配置页面加入

1
2
3
4
5
6
7
8
9
10
11
server {
...
location ~ \.(php|phtml|php7)$ {
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
...
}

但是只添加这一个可以吗? 亲测不可以还是不能访问那怎么办

我们还要配置一下php的www.conf让其可以执行其他php文件

在dockerfile中

1
&& sed -i 's/;security.limit_extensions = .*/security.limit_extensions = .php .phtml .php7/g' /usr/local/etc/php-fpm.d/www.conf \

注意这个是www.conf和php.ini存在本质区别

问题三. 在进行文件包含类题目时发现无法正确调用php伪协议

我们肯定是要去php.ini修改

1
allow_url_include=1

但是现实很骨感, 没找到相关地方

经过查询发现, 在

1
/usr/local/etc/php/conf.d/

我们如果在这下面配置.ini在php启动过程中会自动初始化其中的.ini文件, 我们利用这个特性

在dockerfile中加上

1
RUN echo "allow_url_include=1" > /usr/local/etc/php/conf.d/include.ini

即可