掀桌子

2023-11-04

掀桌子(来源:攻防世界)

1.关卡描述


2.解题步骤


分析:

给了一份报文:

c8e9aca0c6f2e5f3e8c4efe7a1a0d4e8e5a0e6ece1e7a0e9f3baa0e8eafae3f9e4eafae2eae4e3eaebfaebe3f5e7e9f3e4e3e8eaf9eaf3e2e4e6f2

这是DDCTF2018,不会太简单,看着上面像16进制转ASCII一下:

利用base全家桶解密一下:

都没有得到有效的信息,没有任何思路。

=================

参考别人的writeup

思路:分析字符串的频率

import string

total = 0
cipertext = "c8e9aca0c6f2e5f3e8c4efe7a1a0d4e8e5a0e6ece1e7a0e9f3baa0e8eafae3f9e4eafae2eae4e3eaebfaebe3f5e7e9f3e4e3e8eaf9eaf3e2e4e6f2"
for i in string.printable:
    if i in cipertext:
        print(i)
        total = total + 1

print("总共有字符:",total,"个")     

all = 0
for i in cipertext:
    all = all + 1

print("所有字符有:",all)

(对这个脚本还有一点想说的是,空格是可打印的字符,也就是说如果我们的字符串很多时,使用“”“存在的空格也会计算,利用防斜杆\处理,计算总共字符没问题,但计算所有字符会出现问题,但可以利用读取文件的方式进行解决,需要修改代码)

从脚本你的结果上看我们的进攻方向是在16进制上

实际上我们大致看也能看出来,知道方向后,我们让其16进制转ASCII码,发现一堆乱七八糟的字符,那么如何去解,字符是16进制,且118是2的倍数,我们可以两个两个拆分出来:

再回去观察一下这段十六进制字符,每两位一组,(注:这里的字符串与攻防世界提供的字符串不一样,理解原理即可)

['d4', 'e8', 'e1', 'f4', 'a0', 'f7', 'e1', 'f3', 'a0', 'e6', 'e1', 'f3', 'f4', 'a1', 'a0', 'd4', 'e8', 'e5', 'a0', 'e6', 'ec', 'e1', 'e7', 'a0', 'e9', 'f3', 'ba', 'a0', 'c4', 'c4', 'c3', 'd4', 'c6', 'fb', 'b9', 'b2', 'b2', 'e1', 'e2', 'b9', 'b9', 'b7', 'b4', 'e1', 'b4', 'b7', 'e3', 'e4', 'b3', 'b2', 'b2', 'e3', 'e6', 'b4', 'b3', 'e2', 'b5', 'b0', 'b6', 'b1', 'b0', 'e6', 'e1', 'e5', 'e1', 'b5', 'fd']

发现都很大 ,都是以字母开头的十六进制。有多大呢,把它转换成十进制,更加直观地体会一下:

[212, 232, 225, 244, 160, 247, 225, 243, 160, 230, 225, 243, 244, 161, 160, 212, 232, 229, 160, 230, 236, 225, 231, 160, 233, 243, 186, 160, 196, 196, 195, 212, 198, 251, 185, 178, 178, 225, 226, 185, 185, 183, 180, 225, 180, 183, 227, 228, 179, 178, 178, 227, 230, 180, 179, 226, 181, 176, 182, 177, 176, 230, 225, 229, 225, 181, 253]

那为什么说它大呢,因为ASCII可见字符的十进制取值范围为32—126 ,所以上面的字符串转换成ASCII字符以后,出现的都是些非可见字符,也就是刚刚所提到的奇奇怪怪的字符。

那么要得到可见字符,就要把它们的值限制在[32,126] 之内,所以我们对其取128的余数 (为什么是128而不是127呢,这是习惯性选择2的8次方的结果吧),结果:

[84, 104, 97, 116, 32, 119, 97, 115, 32, 102, 97, 115, 116, 33, 32, 84, 104, 101, 32, 102, 108, 97, 103, 32, 105, 115, 58, 32, 68, 68, 67, 84, 70, 123, 57, 50, 50, 97, 98, 57, 57, 55, 52, 97, 52, 55, 99, 100, 51, 50, 50, 99, 102, 52, 51, 98, 53, 48, 54, 49, 48, 102, 97, 101, 97, 53, 125]

好,终于可以尝试转换为ASCII字符了:

['T', 'h', 'a', 't', ' ', 'w', 'a', 's', ' ', 'f', 'a', 's', 't', '!', ' ', 'T', 'h', 'e', ' ', 'f', 'l', 'a', 'g', ' ', 'i', 's', ':', ' ', 'D', 'D', 'C', 'T', 'F', '{', '9', '2', '2', 'a', 'b', '9', '9', '7', '4', 'a', '4', '7', 'c', 'd', '3', '2', '2', 'c', 'f', '4', '3', 'b', '5', '0', '6', '1', '0', 'f', 'a', 'e', 'a', '5', '}']

得到flag

利用脚本:

key = 'd4e8e1f4a0f7e1f3a0e6e1f3f4a1a0d4e8e5a0e6ece1e7a0e9f3baa0c4c4c3d4c' \
      '6fbb9b2b2e1e2b9b9b7b4e1b4b7e3e4b3b2b2e3e6b4b3e2b5b0b6b1b0e6e1e5e1b5fd'

list1 = []
for x in range(0,len(key),2):
    k = key[x:x+2]
    list1.append(k)
print(list1)

list2 = []
for x in range(0,len(list1)):
    list2.append(int(list1[x],16))
print(list2)

list3 = map(lambda x:x%128,list2)
list33 = list(list3)
print(list33)

list4 = map(chr,list33)
list44 = list(list4)
print(list44)

flag = ''.join(list44)
print(flag)

===============

其他思路(没有了)及其脚本:

简单脚本(前提都是知道思路的)

1.

2.

3.

4.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

掀桌子 的相关文章

  • linux+性能排查,Linux系统性能排查基础

    此文已由作者李晶授权网易云社区发布 欢迎访问 上一期运维季刊中 我们重点从CPU方面分析了Linux系统性能瓶颈 除了CPU之外 内存 IO和网络也是常见的造成系统出现问题的根源 本篇我们继续介绍如何从这三个子系统来排查Linux整个系统的
  • Redis配置数据持久化---APPEND ONLY MODE

    Redis可以实现数据的持久化存储 即将数据保存到磁盘上 Redis的持久化存储提供两种方式 RDB与AOF RDB是默认配置 AOF需要手动开启 现在Redis的配置中默认是关闭AOF模式的 如果要开启AOF模式 修改Redis的配置文件

随机推荐

  • [5机器学习]计算机视觉的世界-卷积神经网络(CNNs)

    我们知道 数据不仅包含文字 数字 还包含图片 视频等 如何更好地查看 识别和解释图像和视频的内容 就像人类视觉一样 一直是目前人工智能的主要研究方向 机器学习无疑是现代数据科学的核心 在经历了几十年回归 分类 决策树 异常检测的沉淀后 数据
  • 期货投资者教育系列丛书 铝

    铝是一种轻金属 其化合物在自然界中分布极广 地壳中铝的资源约为400 500 亿吨 仅次于氧和硅 具第三位 在金属品种中 仅次于钢铁 为第二大类金属 铝具有特殊的化学 物理特性 不仅重量轻 质地坚 而且具有良好的延展性 导电性 导热性 耐热
  • 2022春招前端最新面试题分享(航天宏图)

    航天宏图面经 公司及岗位信息 公司 航天宏图 岗位 前端校招 地点 北京 薪资 10k 15k 面试结果 二面必须让线下面试 去不了 一面 2022 04 21 自我介绍 为什么没有在实习公司转正 实习对于你最大的收获 WebSocket在
  • qt connect 无效_QT 信号槽connect写法

    先看下示例 QPushButton btn new QPushButton 方式一 老式写法 connect btn SIGNAL clicked this SLOT close 方式二 Qt5后新写法 connect btn QPushB
  • Vue父组件子组件的通信方式20种(全网最全总结)

    目录 一 常用 Props 父组件 子组件 emit和 on 父组件 子组件 parent和 children 父组件 子组件 attrs和 listeners 父组件 子组件 provide和inject 父组件 子组件 二 其他探索 E
  • Ubuntu安装Visual Studio Code

    一 Visual Studio Code介绍 Visual Studio Code 简称VS Code 是一款由微软开发的跨平台代码编辑器 它支持多种编程语言 包括C C Java JavaScript Python等等 VS Code具有
  • 快乐E栈项目实战第五阶段

    快乐E栈项目实战第五阶段 文章目录 快乐E栈项目实战第五阶段 1 前言 2 功能分析 3 简单协议设计 4 代码 1 服务端 2 客户端 5 结果 服务端 客户端 1 前言 学习完网络编程了 我们可以试着开发一个服务端程序 将快递信息发送到
  • I帧、P帧、B帧

    I帧 P帧 B帧 简单地说 I帧是关键帧 属于帧内压缩 就是和AVI的压缩是一样的 P是向前搜索的意思 B是双向搜索 他们都是基于I帧来压缩数据 I帧表示关键帧 你可以理解为这一帧画面的完整保留 解码时只需要本帧数据就可以完成 因为包含完整
  • 华为OD机试真题-最左侧冗余覆盖子串【2023.Q1】

    题目描述 给定两个字符串 s1 和 s2 和正整数k 其中 s1 长度为 n1 s2 长度为 n2 在s2中选一个子串 满足 1 该子串长度为n1 k 2 该子串中包含s1中全部字母 3 该子串每个字母出现次数不小于s1中对应的字母 我们称
  • 4万字 全面解读数据中台、数据仓库、数据湖等概念!建议收藏!

    作者丨修鹏李 建议阅读需50分钟 如今 随着诸如互联网以及物联网等技术的不断发展 越来越多的数据被生产出来 据统计 每天大约有超过2 5亿亿字节的各种各样数据产生 这些数据需要被存储起来并且能够被方便的分析和利用 随着大数据技术的不断更新和
  • JWT登录过期自动刷新方案与token泄漏解决方案

    概念 简单来说JWT就是通过一定规范来生成token 再用解密算法解密token 就可以获取用户信息了 优缺点 优点 避免重复查库 存储在客户端 不占用服务端资源 缺点 token是经过base64编码 所以可以解码 因此token加密前的
  • 微博数据处理——处理僵尸用户数据集(二)

    获取僵尸用户数据集可见上文 https blog csdn net weixin 43906500 article details 116447858 1 数据集展示 僵尸数据集如下所示 2 处理数据集 编写处理代码 将所需训练数据保存为c
  • Vue 集成 stylus和stylus-loader

    stylus和stylus loader安装 cnpm i stylus S cnpm i stylus loader S stylus使用 一 语法不再需要括号 相比之前语法简洁
  • 家庭个人服务器的搭建之路--非傻瓜式描述

    本文记录了个人亲身搭建samba服务的经历 对于软件如何安装之类的内容没有详细讲解 需要各位自行解决软件安装问题 本文主要讲解了Samba服务器外网可访问的拓扑架构以及实现方式 我的服务器环境描述 一台ubuntu主机 OS使用的是Ubun
  • MyBatis报错MySQLIntegrityConstraintViolationException:Column "某一个列名" cannot be null

    Integrity 完整性 Constraint 约束 Violation违反 即违反完整性约束异常 列名不能为空 the error occurred while setting parameters
  • 23.8.18.查询接口时候,有低代码的要根据低代码来查询接口,千万不要盲目的看代码上的介绍。

    康代码上的介绍可太坑人了 所以有低代码的要直接在低代码里面搜索 不要盲目相信代码上的介绍是xx接口 有些程序y就是懒 复制过来 随便写个介绍或者不写介绍
  • vue 点击当前item项,实现单选或多选高亮业务

    单选业务 template
  • bootstrap-select组件,亲测还不错

    前言 之前分享过两篇bootstrap下拉框的组件 JS组件系列 两种bootstrap multiselect组件大比拼 和 JS组件系列 Bootstrap Select2组件使用小结 收到很多园友的关注和提问 最后总结这两篇里面的下拉
  • Pandas 数据结构之 DataFrame使用教程

    Pandas 数据结构 DataFrame 简介 DataFrame 实例化 行数据的选择 1 按位置选择行数据 单行选择 2 按位置选择行数据 多行选择 类似于切片 3 按索引值选择单 多 行数据 4 按条件 bool 选择指定的行数据
  • 掀桌子

    掀桌子 来源 攻防世界 1 关卡描述 2 解题步骤 分析 给了一份报文 c8e9aca0c6f2e5f3e8c4efe7a1a0d4e8e5a0e6ece1e7a0e9f3baa0e8eafae3f9e4eafae2eae4e3eaebfa