当前位置: 首页 > news >正文

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 写匿名函数

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 2024年水利水电安全员考试题库及答案
  • python自动化办公之cryptography加密解密
  • 【论文解读】AGENTLESS:揭开基于LLM的软件工程代理的神秘面纱,重塑软件工程自动化新基线
  • 力扣139 单词拆分 Java版本
  • 本安防爆手机:危险环境下的安全通信解决方案
  • 剖析DeFi交易产品之UniswapV3:交易路由合约
  • MySQL架构和工作流程
  • uniapp video视频铺满容器,不显示控件
  • DDR3(三)
  • EtherCAT主站IGH-- 9 -- IGH之eoe_request.h/c文件解析
  • SpringCloudGateway
  • go语言day10 接口interface 类型断言 type关键字
  • SpringBoot实战(二十八)集成 Collabora Online 实现在线编辑
  • el-table实现固定列,及解决固定列导致部分滚动条无法拖动的问题
  • Buuctf之SimpleRev做法
  • 【知识碎片】第三方登录弹窗效果
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • HTML中设置input等文本框为不可操作
  • Java应用性能调优
  • Material Design
  • React 快速上手 - 07 前端路由 react-router
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • Twitter赢在开放,三年创造奇迹
  • uva 10370 Above Average
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 巧用 TypeScript (一)
  • 推荐一个React的管理后台框架
  • 异常机制详解
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • 7行Python代码的人脸识别
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • 积累各种好的链接
  • ​如何在iOS手机上查看应用日志
  • # linux 中使用 visudo 命令,怎么保存退出?
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • #Java第九次作业--输入输出流和文件操作
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • $.ajax,axios,fetch三种ajax请求的区别
  • (1)STL算法之遍历容器
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (二十六)Java 数据结构
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (十五)使用Nexus创建Maven私服
  • (贪心) LeetCode 45. 跳跃游戏 II
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • ... 是什么 ?... 有什么用处?
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .Net Core与存储过程(一)
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .Net mvc总结
  • .Net 基于.Net8开发的一个Asp.Net Core Webapi小型易用框架
  • .net 流——流的类型体系简单介绍
  • .NET单元测试使用AutoFixture按需填充的方法总结