CTFShow的RE题(三)

数学不及格

strtol 函数

long strtol(char str, char **endptr, int base);
将字符串转换为长整型
在这里插入图片描述
就是解这个方程组了
主要就是 v4, v9的关系,
3
v9-(v10+v11+v12)=62d10d4673
v4 + v12 + v11 + v10 = 0x13A31412F8C
得到 3*v9+v4=19D024E75FF(1773860189695)
在这里插入图片描述

重点,斐波那契后面相差很大

又因为v4只在1至200的范围内,数字很小因此可以忽略不记求出v9的近似值

​ v9=1773860189695/3(591286729898)

然后找个在线网站查看一下斐波那契数列找到v9的近似值

在这里插入图片描述

可以看到数列的第58位与v9十分相似,因此可以得出v9为591286729879,v4为58,
得到四个参数,然后转字符串

output = "666c61677b6e65776265655f686572657d"
flag = [''] * (len(output) // 2)
mapTable = "30 31 32 33 34 35 36 37 38 39 61 62 63 64 65 66".split(' ')
#print(mapTable)
mapTable = [chr(int(i, 16)) for i in mapTable]
#print(mapTable)
# ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f']
for i in range(0, len(output), 2):high4Bit = mapTable.index(output[i])       # 得到高 4 位#print(high4Bit)low4Bit  = mapTable.index(output[i+1])     # 得到低 4 位curByte  = high4Bit << 4 | low4Bit         # 合成 char 型#print(curByte)flag[i//2] = chr(curByte)
print(''.join(flag))
#flag{newbee_here}

有时候不是完全代码可以得到所有信息,逆向真的比较考验脑洞啊!

flag白给

在这里插入图片描述
弹出两个对话框
在这里插入图片描述
都没有什么信息,说是用 dbg 试试搜索关键字错误
x32dbg 搜索字符串也不行
试试 OD 可以,有一个中文搜索插件,选择 ASCII 搜索
在这里插入图片描述
往下慢慢找
在这里插入图片描述

直接动调吧
在这里插入图片描述
就是这两个字符比较了,试试
在这里插入图片描述

主要考察的是对中文字符串的搜索,目前只知道有 OD ,之后有其他办法再记一下,有师傅知道也可以说一下。

签退

import string
c_charset = string.ascii_uppercase + string.ascii_lowercase + string.digits + '()'
flag = 'BozjB3vlZ3ThBn9bZ2jhOH93ZaH9'
#print(string.ascii_uppercase)def encode(origin_bytes):c_bytes = [('{:0>8}').format(str(bin(b)).replace('0b', '')) for b in origin_bytes]#print(c_bytes)resp = ''nums = len(c_bytes) // 3remain = len(c_bytes) % 3integral_part = c_bytes[0:3 * nums]while integral_part:tmp_unit = ('').join(integral_part[0:3])tmp_unit = [int(tmp_unit[x:x + 6], 2) for x in [0, 6, 12, 18]]resp += ('').join([c_charset[i] for i in tmp_unit])integral_part = integral_part[3:]if remain:remain_part = ('').join(c_bytes[3 * nums:]) + (3 - remain) * '0' * 8tmp_unit = [int(remain_part[x:x + 6], 2) for x in [0, 6, 12, 18]][:remain + 1]resp += ('').join([c_charset[i] for i in tmp_unit]) + (3 - remain) * '.'return rend(resp)def rend(s):def encodeCh(ch):f = lambda x: chr((ord(ch) - x + 2) % 26 + x)if ch.islower():return f(97)if ch.isupper():return f(65)return chreturn ('').join(encodeCh(c) for c in s)

看着挺吓人的,其实就是一个 base64 + 凯撒加密,偏移量为2
直接改一点就行了

if __name__ == '__main__':enc=''for c in flag:enc+=encodeCh(c)print(base64.b64decode(enc))
#b'flag{c_t_f_s_h_0_w_!}'

还是要增强代码阅读能力

生成映射表:

c_charset = string.ascii_uppercase + string.ascii_lowercase + string.digits + ‘()’

c_bytes = [(‘{:0>8}’).format(str(bin(b)).replace(‘0b’, ‘’)) for b in origin_bytes]
#change each byte into eight BIN string in c_bytes
f = lambda x: chr((ord(ch) - x + 2) % 26 + x)
# 凯撒密码
if ch.islower():
return f(97)
if ch.isupper():
return f(65)
return ch

   还是对字节的操作,一些复合写法需要学习,还有就是 lambda 写匿名函数

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

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

相关文章

【笔记】TimEP Safety Mechanisms方法论

1.TimEPM Overview 三大监控方法: Alive Supervision 实时监督Logical Supervision 逻辑监督Deadline Supervision 限时监督相关模块框图: 相关模块调用框图: 每个MCU核开启内狗(1核1狗),内狗用于监控相应核的TASK超时,超时后软reset MCU内狗时钟需要独立于OS时钟,两…

MongoDB集群搭建-最简单

目录 前言 一、分片概念 二、搭建集群的步骤 总结 前言 MongoDB分片&#xff08;Sharding&#xff09;是一种水平扩展数据库的方法&#xff0c;它允许将数据分散存储在多个服务器上&#xff0c;从而提高数据库的存储容量和处理能力。分片是MongoDB为了应对大数据量和高吞吐量需…

10.x86游戏实战-汇编指令lea

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 工具下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd6tw3 提…

【IT领域新生必看】 Java编程中的重载(Overloading):初学者轻松掌握的全方位指南

文章目录 引言什么是方法重载&#xff08;Overloading&#xff09;&#xff1f;方法重载的基本示例 方法重载的规则1. 参数列表必须不同示例&#xff1a; 2. 返回类型可以相同也可以不同示例&#xff1a; 3. 访问修饰符可以相同也可以不同示例&#xff1a; 4. 可以抛出不同的异…

Amesim应用篇-信号传递

前言 在Amesim中常见的信号传递是通过信号线连接&#xff0c;针对简单的模型通过信号线连接还可以是信号线清晰规整&#xff0c;方便查看。如果模型较复杂&#xff0c;传递信号的元件较多时&#xff0c;此时再继续使用信号线进行信号传递&#xff0c;可能会使草图界面看起来杂…

在原有的iconfont.css文件中加入新的字体图标

前言&#xff1a;在阿里图标库中&#xff0c;如果你没有这个字体图标的线上项目&#xff0c;那么你怎么在本地项目中的原始图标文件中添加新的图标呢&#xff1f; 背景&#xff1a;现有一个vue项目&#xff0c;下面是这个前端项目的字体图标文件。现在需要新开发功能页&#x…

磁盘分区工具 -- 傲梅分区助手 v10.4.1 技术员版

软件简介 傲梅分区助手是一款功能强大的磁盘分区工具&#xff0c;它专为Windows系统设计&#xff0c;帮助用户更高效地管理他们的硬盘。该软件支持多种分区操作&#xff0c;包括创建、格式化、调整大小、移动、合并和分割分区。此外&#xff0c;它还提供了复制硬盘和分区的功能…

InspireFace-商用级的跨平台开源人脸分析SDK

InspireFace-商用级的跨平台开源人脸分析SDK InspireFaceSDK是由insightface开发的⼀款⼈脸识别软件开发⼯具包&#xff08;SDK&#xff09;。它提供了⼀系列功能&#xff0c;可以满⾜各种应⽤场景下的⼈脸识别需求&#xff0c;包括但不限于闸机、⼈脸⻔禁、⼈脸验证等。 该S…

C++(Qt)-GIS开发-QGraphicsView显示瓦片地图简单示例

C(Qt)-GIS开发-QGraphicsView显示瓦片地图简单示例 文章目录 C(Qt)-GIS开发-QGraphicsView显示瓦片地图简单示例1、概述2、实现效果3、主要代码4、源码地址 更多精彩内容&#x1f449;个人内容分类汇总 &#x1f448;&#x1f449;GIS开发 &#x1f448; 1、概述 支持多线程加…

java版本工程项目管理系统 Spring Cloud+Spring Boot+Mybatis+Vue+ElementUI+前后端分离构建工程项目管理系统

工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离构建工程项目管理系统 1. 项目背景 一、随着公司的快速发展&#xff0c;企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性&#xff0c;公司对内部工程管理的…

【C++】模板进阶--保姆级解析(什么是非类型模板参数?什么是模板的特化?模板的特化如何应用?)

目录 一、前言 二、什么是C模板&#xff1f; &#x1f4a6;泛型编程的思想 &#x1f4a6;C模板的分类 三、非类型模板参数 ⚡问题引入⚡ ⚡非类型模板参数的使用⚡ &#x1f525;非类型模板参数的定义 &#x1f525;非类型模板参数的两种类型 &#x1f52…

Java视频点播网站

作者介绍&#xff1a;计算机专业研究生&#xff0c;现企业打工人&#xff0c;从事Java全栈开发 主要内容&#xff1a;技术学习笔记、Java实战项目、项目问题解决记录、AI、简历模板、简历指导、技术交流、论文交流&#xff08;SCI论文两篇&#xff09; 上点关注下点赞 生活越过…

ElementPlusError: [ElPagination] 你使用了一些已被废弃的用法,请参考 el-pagination 的官方文档

一、问题描述&#xff1a; 今天在使用elementui plus的时候遇到了一个奇葩的问题&#xff0c; 就是提示 使用了一些已被废弃的用法&#xff0c; 奇葩就在于我是 复制另一个页面的分页&#xff0c; 一摸一样的东西&#xff0c;就只这个页面报错&#xff0c; 分页也不出 为了这个…

初识STM32:开发方式及环境

STM32的编程模型 假如使用C语言的方式写了一段程序&#xff0c;这段程序首先会被烧录到芯片当中&#xff08;Flash存储器中&#xff09;&#xff0c;Flash存储器中的程序会逐条的进入CPU里面去执行。 CPU相当于人的一个大脑&#xff0c;虽然能执行运算和执行指令&#xff0c;…

linux centos 安装niginx并且添加ssl(https)模块

文章目录 前言一、nginx安装教程1.流程步骤 总结 前言 一、nginx安装教程 1.流程步骤 代码如下&#xff08;示例&#xff09;&#xff1a; 1.先下载linux安装包 2.解压安装命令 sudo tar -zxvf nginx-1.20.1.tar.gz3.进入解压后的目录 sudo cd nginx-1.20.14.安装 sudo y…

baomidou多数据源切换注解@DS没有效果

baomidou多数据源切换注解DS没有效果 <dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>3.1.1</version> </dependency> ##原因 方法上有Transaction…

jmeter-beanshell学习3-beanshell获取请求报文和响应报文

前后两个报文&#xff0c;后面报文要用前面报文的响应结果&#xff0c;这个简单&#xff0c;正则表达式或者json提取器&#xff0c;都能实现。但是如果后面报文要用前面请求报文的内容&#xff0c;感觉有点难。最早时候把随机数写在自定义变量&#xff0c;前后两个接口都用这个…

EtherCAT转Profinet网关配置说明第二讲:上位机软件配置

EtherCAT协议转Profinet协议网关模块&#xff08;XD-ECPNS20&#xff09;&#xff0c;不仅可以实现数据之间的通信&#xff0c;还可以实现不同系统之间的数据共享。EtherCAT协议转Profinet协议网关模块&#xff08;XD-ECPNS20&#xff09;具有高速传输的特点&#xff0c;因此通…

算法题-回文子串和最长回文子序列

算法题-回文子串和最长回文子序列 一、647. 回文子串二、516. 最长回文子序列 一、647. 回文子串 中等 给你一个字符串 s &#xff0c;请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个…

云端AI大模型群体智慧后台架构思考

1 大模型的调研 1.1 主流的大模型 openai-chatgpt 阿里巴巴-通义千问 一个专门响应人类指令的大模型。我是效率助手&#xff0c;也是点子生成机&#xff0c;我服务于人类&#xff0c;致力于让生活更美好。 百度-文心一言&#xff08;千帆大模型&#xff09; 文心一言"…