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

BUUCTF[2019红帽杯]easyRE

进入ida,shift+F12,查找flag没有结果,有可疑字符串进入

双击黄色部分,然后F5看伪代码

先是异或加密

v12="Iodl>Qnb(ocy"

v12=list(v12) # 转为字符列表

for i in range(0,len(v12)):

v12[i]=ord(v12[i]) #字符转ASCII码

v12.append(127) # 补第13字节:127

v13="y.i"

v13=list(v13)

for i in range(0,len(v13)):

v13[i]=ord(v13[i])

v12.extend(v13) #v13拼接到v12后

v12.append(127)

v14="d`3w}wek9{iy=~yL@EC"

v14=list(v14)

for i in range(0,len(v14)):

v14[i]=ord(v14[i])

v12.extend(v14) #v14拼接到v12后

print(v12)

v15=''

for i in range(0,len(v12)):

v15+=chr(v12[i]^i)

print(v15)

输出:Info:The first four chars are `flag`

接着是十个base64加密后得v11=off_6CC090

厨子解

十个base64解密得一个网址,进入之后是文章,说明找错了不是flag

注意到off_6CC090下面有数据

进入sub_400D35

v4=v1

f和g可以想到是flag中的,恰好byte_6CC0A0[0]和byte_6CC0A3中间还有两个数据,所以v4分别异或0x40,0x35,0x20,0x56得到'flag'

'flag' ^ 0x40,0x35,0x20,0x56求出v4

j=0 → byte_6CC0A0[0] ^ v4[0]

j=1 → byte_6CC0A0[1] ^ v4[1]

j=2 → byte_6CC0A0[2] ^ v4[2]

j=3 → byte_6CC0A0[3] ^ v4[3]

j=4 → byte_6CC0A0 [4] ^ v4 [0](4%4=0,循环使用第 0 字节)

脚本求出flag

byte_6cc0a0=[0x40,0x35,0x20,0x56,0x5d,0x18,0x22,0x45,0x17,0x2f,0x24,0x6e,0x62,0x3c,0x27,0x54,0x48,0x6c,0x24,0x6e,0x72,0x3c,0x32,0x45,0x5b] tmp=[102,108,97,103] #flag的ASCII码 v4=[] for i in range(0,4): v4.append(tmp[i]^byte_6cc0a0[i]) print(v4) flag='' for i in range(0,25): flag+=chr(byte_6cc0a0[i]^v4[i%4]) print(flag) byte_6cc0a0=[0x40,0x35,0x20,0x56,0x5d,0x18,0x22,0x45,0x17,0x2f,0x24,0x6e,0x62,0x3c,0x27,0x54,0x48,0x6c,0x24,0x6e,0x72,0x3c,0x32,0x45,0x5b] tmp=[102,108,97,103] #flag的ASCII码 v4=[] for i in range(0,4): v4.append(tmp[i]^byte_6cc0a0[i]) print(v4) flag='' for i in range(0,25): flag+=chr(byte_6cc0a0[i]^v4[i%4]) print(flag) byte_6cc0a0=[0x40,0x35,0x20,0x56,0x5d,0x18,0x22,0x45,0x17,0x2f,0x24,0x6e,0x62,0x3c,0x27,0x54,0x48,0x6c,0x24,0x6e,0x72,0x3c,0x32,0x45,0x5b] tmp=[102,108,97,103] #flag的ASCII码 v4=[] for i in range(0,4): v4.append(tmp[i]^byte_6cc0a0[i]) print(v4) flag='' for i in range(0,25): flag+=chr(byte_6cc0a0[i]^v4[i%4]) print(flag)

flag{Act1ve_Defen5e_Test}

http://www.cnnetsun.cn/news/3322898.html

相关文章:

  • Kimi-K2.5-W4A8社区贡献指南:从问题报告到代码提交
  • 一文读懂Qwen3-14B-Instruct-da8w8-torchao-v0.16.0:TorchAO动态量化技术原理与实践
  • 手把手教你学pcie-LTSSM 的整体逻辑(先建立认知)
  • Appainter扩展开发指南:如何添加自定义主题组件
  • 【ChatGPT任务编排权威标准】:基于OpenAI官方API v1.3.2与LLM Pipeline最佳实践的6层状态管理模型
  • Spring AI V 2.0.0 源代码,在GitHub标记中消失了
  • SingleTrack_Project(五)传统视觉追踪方法——背景差减法
  • ComplimentaryGradientView高级技巧:自定义渐变起点和颜色组合的终极教程
  • PARD-Qwen3-0.6B模型架构详解:从Qwen3到PARD优化的完整技术栈
  • ChatGPT联网搜索功能性能瓶颈突破:基于真实生产环境的QPS压测数据(13.7万请求/秒下的缓存穿透防护方案)
  • AMD Qwen2.5-VL-7B-Instruct-da8w8-torchao-v0.17.0 vs 原版模型:CPU推理速度与精度对比测试
  • 5个秘诀让大模型推理速度翻倍:llama.cpp性能优化完整指南
  • 10分钟上手highcharter:从安装到绘制第一个交互式图表的完整教程
  • 紧急预警:ChatGPT低效提问正在 silently erode 你的生产力——3天内必须掌握的4个止损型提问范式
  • UE4官方鱼类资源包实战:从导入到性能优化的完整指南
  • yum 3.4.3 离线部署实战:仅下载 10 个依赖包的 3 步离线安装方案
  • AI测试学习路线图 2026版:从智能体到性能测试的6阶段进阶路径
  • Seekr高级搜索技巧:利用预定义字段和过滤器精准定位目标信息
  • (8)FPGA-CNN池化层
  • ARIA状态与属性实战教程:动态内容无障碍访问的完整解决方案
  • OpenWhispr未来路线图:即将推出的功能与改进预览
  • 5大核心功能重塑你的B站体验
  • Seekr插件系统:如何扩展和定制你的OSINT工具集
  • Python3操作MySQL由脚本小子迈向工程化开发
  • Python远程操作文件?这招不学,等于白学
  • 生产环境部署:immutable在微服务架构中的最佳实践
  • 0 基础入门React Native鸿蒙跨平台开发:速度单位换算器实战
  • pz 高级用法:如何利用自动导入功能简化复杂的数据处理任务
  • minimal-json并发处理最佳实践:线程安全与性能平衡指南
  • 5分钟解决字体焦虑:M+ FONTS让你的设计从此告别选择困难