[CTF夺旗赛] CTFshow Web13-14 详细过程保姆级教程~

news2024/11/25 2:35:47

前言

​ CTFShow通常是指网络安全领域中的“Capture The Flag”(夺旗赛)展示工具或平台。这是一种用于分享、学习和展示信息安全竞赛中获取的信息、漏洞利用技巧以及解题思路的在线社区或软件。参与者会在比赛中收集“flag”,通常是隐藏在网络环境中的数据或密码形式,然后通过分析、破解等手段找到并提交。CTFShow可以帮助人们了解最新的安全技术和挑战,同时也促进了安全知识和技术的交流。

Web13

1.首先,我们启动靶机,打开首页,发现这是一个文件上传页面。
在这里插入图片描述

2.根据我们的经验,我们下载一下备份文件进行一下代码审计upload.php.bak,在url中加入即可。
在这里插入图片描述

3.我们来对源码进行一下代码审计,我们发现$size > 24规定文件大小要大于24;strlen($filename)>9文件名长度要大于9;strlen($ext_suffix)>3后缀名的长度要大于3;preg_match("/php/i",$ext_suffix)后缀名要包含php;preg_match("/php/i",$filename)文件名包含php。

<?php 
	header("content-type:text/html;charset=utf-8");
	$filename = $_FILES['file']['name'];
	$temp_name = $_FILES['file']['tmp_name'];
	$size = $_FILES['file']['size'];
	$error = $_FILES['file']['error'];
	$arr = pathinfo($filename);
	$ext_suffix = $arr['extension'];
	if ($size > 24){
		die("error file zise");
	}
	if (strlen($filename)>9){
		die("error file name");
	}
	if(strlen($ext_suffix)>3){
		die("error suffix");
	}
	if(preg_match("/php/i",$ext_suffix)){
		die("error suffix");
    }
    if(preg_match("/php/i"),$filename)){
        die("error file name");
    }
	if (move_uploaded_file($temp_name, './'.$filename)){
		echo "文件上传成功!";
	}else{
		echo "文件上传失败!";
	}

 ?>

4.那么知道了这些条件我们就要来构造文件了。首先我们来写一个配置文件.user.ini
在这里插入图片描述

​ 将其上传。
在这里插入图片描述

5.接着我们来写一个1.png
在这里插入图片描述

​ 将其上传。
在这里插入图片描述

6.上传之后我们来看一下有哪些文件/index.php?1=system("ls");
在这里插入图片描述

7.我们来查看一下可能会藏有flag的文件/index.php?1=highlight_file('903c00105c0141fd37ff47697e916e53616e33a72fb3774ab213b3e2a732f56f.php');发现果然在里面。
在这里插入图片描述

Web14

1.首先我们启动靶机,我们发现首页是一个php代码,我们可以来进行一下代码审计,会发现提示是在url中加参数c,并且对参数进行了一些限制。
在这里插入图片描述

 <?php
include("secret.php");

if(isset($_GET['c'])){
    $c = intval($_GET['c']);
    sleep($c);
    switch ($c) {
        case 1:
            echo '$url';
            break;
        case 2:
            echo '@A@';
            break;
        case 555555:
            echo $url;
        case 44444:
            echo "@A@";
            break;
        case 3333:
            echo $url;
            break;
        case 222:
            echo '@A@';
            break;
        case 222:
            echo '@A@';
            break;
        case 3333:
            echo $url;
            break;
        case 44444:
            echo '@A@';
        case 555555:
            echo $url;
            break;
        case 3:
            echo '@A@';
        case 6000000:
            echo "$url";
        case 1:
            echo '@A@';
            break;
    }
}

highlight_file(__FILE__); 

2.这个时候我们就来测试一下,?c=3,发现爆出了一个php,访问一下看看。
在这里插入图片描述

3.我们访问一下here_1s_your_f1ag.php发现这是一个查询框并且带有弹窗回显,那么很明显说明这里是一个sql注入漏洞。
在这里插入图片描述

4.既然是sql注入漏洞,那么思路就很简单了,首先我们来测试列数,当我们输入1 order by 1时我们发现没有弹窗,这里有可能是某些字符被过滤掉了,我们将空格换为/**/,输入1/**/order/**/by/**/1发现有弹窗有回显,但是当我们输入1/**/order/**/by/**/1的时候我们发现就有弹窗但无回显了,说明列数为1。
在这里插入图片描述

5.知道了列数为1之后,我们就来去数据库中找了,首先我们先来找到数据库名。-1/**/union/**/select/**/database(),发现数据库名为web。
在这里插入图片描述

6.知道了数据库名我们就要找表名和列名了,这里就不多赘述了,但是当我们找到列名的时候我们发现flag不在这里!?query=0/**/union/**/select/**/group_concat(1,2,3)/**/from/**/(select/**/1,2,3/**/union/**/select/**/*/**/from/**/content)x同时它给了我们一个提示就是在secret中。
在这里插入图片描述

7.我们来到secret.php中,发现并看不了,我们想到是否能用load_file()来查看呢,url中输入?query=-1/**/union/**/select/**/load_file('/var/www/html/secret.php'),果然我们Ctrl+U一下发现了端倪。
在这里插入图片描述

8.所以real_flag_is_here。我们再次输入?query=-1/**/union/**/select/**/load_file('/real_flag_is_here'),然后再看一下,成功找到了flag。
在这里插入图片描述

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

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

相关文章

SHCTF-2024-week1-wp

文章目录 SHCTF 2024 week1 wpMisc[Week1]真真假假?遮遮掩掩![Week1]拜师之旅①[Week1]Rasterizing Traffic[Week1]有WiFi干嘛不用呢&#xff1f; web[Week1] 单身十八年的手速[Week1] MD5 Master[Week1] ez_gittt[Week1] jvav[Week1] poppopop[Week1] 蛐蛐?蛐蛐! SHCTF 2024…

一些自定义函数

目录 一.strcmp()函数 二.strstr()函数 三.memcpy函数 四.memmove函数 五.strncpy函数 六.strcat函数 七.atoi函数 八.strlen函数 一.strcmp()函数 strcmp 函数是用于比较两个字符串是否相等的函数。它通过逐个字符比较两个字符串的 ASCII 值&#xff0c;来判断它们的相…

QD1-P3 HTML 基础内容介绍

本节学习&#xff1a;HTML基础语法介绍。 本节视频 www.bilibili.com/video/BV1n64y1U7oj?p3 ‍ 一、运行HTML代码 在 HBuilderX编辑器中创建空项目&#xff0c;添加一个 html 文件 <!-- QD1-P3 HTML基础语法 --><!DOCTYPE html> <html><head>&l…

Java面试宝典-并发编程学习01

Java 并发编程学习 1、创建线程的有哪些方式&#xff1f; 创建线程的方式有以下几种&#xff1a; 1. 继承Thread类&#xff1a;创建一个类继承Thread类&#xff0c;并重写run()方法&#xff0c;然后通过创建类的实例来创建线程。 2. 实现Runnable接口&#xff1a;创建一个类实…

PH47框架下BBDB飞控基础开发平台极简教程

1 硬件准备 1.1 一块WeAct 的Stm32F411核心板 1.2 2个USB-TTL模块。 1.3 Stm32开发所必须的如STlink烧写器。 1.4 必要的线材。 2 软件准备 2.1 Stm32开发所必备的Keil开发环境。 2.2 PH47框架代码&#xff0c;下载链接 2.3 CSS及BBDB 控制站工程&#xff0c;下载链接 2.4…

鸿蒙面试的一些可能问到的点

页面跳转 router 鸿蒙中跳转主要有两种&#xff0c;一种是router&#xff0c;一种是Navigation&#xff0c;官方推荐使用Navigation。 Router适用于模块间与模块内页面切换&#xff0c;通过每个页面的url实现模块间解耦。模块内页面跳转时&#xff0c;为了实现更好的转场动效…

7.2-I2C的DMA中断

I2C的DMA中断 请先阅读完I2C的普通中断模式以后再阅读本教程 i2c的DMA模式 1.添加通道 &#xff0c;添加后的参数保持默认 2.可以看到自动给我们DMA添加了中断向量。 保存后只需要将下面_ IT改为_ DMA即可 运行代码 i2c1) { aht20State 4; } } /* USER CODE END 0 */ 以上就…

ssm基于java的网上手机销售系统

系统包含&#xff1a;源码论文 所用技术&#xff1a;SpringBootVueSSMMybatisMysql 免费提供给大家参考或者学习&#xff0c;获取源码请私聊我 需要定制请私聊 目 录 目 录 III 1 绪论 1 1.1 研究背景 1 1.2 目的和意义 1 1.3 论文结构安排 2 2 相关技术 3 2.1 SSM框…

yolov5环境GPU搭建 ,用GPU跑polov5算法

win10NVIDIA GeForce RTX 3050torch1.13.1torchaudio0.13.1torchvision 0.14.1 cuda11.7python3.8cudnn8.7.0 在环境搭建中踩了许多坑&#xff0c;yolov5环境的搭建需要依赖很多环境&#xff0c;用cpu跑很容易跑单张识别&#xff0c;用GPU跑却踩了很多坑&#xff0c;不过GPU环…

Mac 备忘录妙用

之前使用 Windows 的过程中&#xff0c;最痛苦的事是没有一款可以满足我快速进行记录的应用 基本都得先打开该笔记软件&#xff0c;然后创建新笔记&#xff0c;最后才能输入&#xff0c;这么多步骤太麻烦了 在切换到 MacOS 之后&#xff0c;让我惊喜的就是自带的备忘录&#…

【java面经thinking】一

目录 类加载过程 加载&#xff1a; 连接 初始化 GC回收机制&#xff08;垃圾回收&#xff09; 区域 判断对象是否存活 回收机制 HashMap 类加载器 加载标识 加载机制 缓存 自定义加载器&#xff1a; JVM内存结构 常量池 string设置成final 按下网址发生 类加…

C语言有关结构体的知识(后有通讯录的实现)

一、结构体的声明 1.1 结构体的定义 结构体是一些值的集合&#xff0c;这些值被称为成员变量。结构的每个成员可以是不同的类型 1.2 结构体的声明 这里以描述一个学生为例&#xff1a; struct stu {char name[10];//名字int age;//年龄char id[20];//学号char sex[5];//性别 }…

TIM定时器(标准库)

目录 一. 前言 二. 定时器的框图 三. 定时中断的基本结构 四. TIM定时器相关代码 五. 最终现象展示 一. 前言 什么是定时器&#xff1f; 定时器可以对输入的时钟进行计数&#xff0c;并在计数值达到设定值时触发中断。 TIM定时器不仅具备基本的定时中断功能&#xff0c;而且…

【LeetCode】708. 循环有序列表的插入

目录 一、题目二、解法完整代码 一、题目 给定循环单调非递减列表中的一个点&#xff0c;写一个函数向这个列表中插入一个新元素 insertVal &#xff0c;使这个列表仍然是循环非降序的。 给定的可以是这个列表中任意一个顶点的指针&#xff0c;并不一定是这个列表中最小元素的…

2024免费mac苹果电脑清理垃圾软件CleanMyMac X4.15.8

对于苹果电脑用户来说&#xff0c;设备上积累的垃圾文件可能会导致存储空间变得紧张&#xff0c;影响电脑的性能和使用体验。尤其是那些经常下载和安装新应用、编辑视频或处理大量照片的用户&#xff0c;更容易感受到存储空间的压力。面对这种情况&#xff0c;寻找一种有效的苹…

springboot3使用Excel导入数据库数据

一、导入依赖 <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml --><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.3.0</version></dependency> 二、…

Xilinx远程固件升级(二)——STARTUPE2原语的使用

通过&#xff08;一&#xff09;可以看出&#xff0c;对于远程固件升级实际上是通过调用flash不同区域的bit实现&#xff0c;通过golden image和update image共同保障了系统的稳定性。在项目中如果将flash的时钟直接绑定FPGA后进行约束&#xff0c;在综合编译时是无法通过的。这…

Spark:DataFrame介绍及使用

1. DataFrame详解 DataFrame是基于RDD进行封装的结构化数据类型&#xff0c;增加了schema元数据&#xff0c;最终DataFrame类型在计算时&#xff0c;还是转为rdd计算。DataFrame的结构化数据有Row&#xff08;行数据&#xff09;和schema元数据构成。 Row 类型 表示一行数据 …

MySQL 8.4修改初始化后的默认密码

MySQL 8.4修改初始化后的默认密码 &#xff08;1&#xff09;初始化mysql&#xff1a; mysqld --initialize --console &#xff08;2&#xff09;之后,mysql会生成一个默认复杂的密码&#xff0c;如果打算修改这个密码&#xff0c;可以先用旧密码登录&#xff1a; mysql -u…

Redis set类型 zset类型

set类型 类型介绍 集合类型也是保存多个字符串类型的元素的&#xff0c;但和列表类型不同的是&#xff0c;集合中 1&#xff09;元素之间是⽆序 的 2&#xff09;元素不允许重复 ⼀个集合中最多可以存储 个元素。Redis 除了⽀持 集合内的增删查改操作&#xff0c;同时还⽀持多…