逆向攻防世界CTF系列38-xxxorrr

逆向攻防世界CTF系列38-xxxorrr

64位无壳,很自然的找到main和一个比较函数

以为逻辑很简单了

python 复制代码
enc = [
  0x56, 0x4E, 0x57, 0x58, 0x51, 0x51, 0x09, 0x46, 0x17, 0x46,
  0x54, 0x5A, 0x59, 0x59, 0x1F, 0x48, 0x32, 0x5B, 0x6B, 0x7C,
  0x75, 0x6E, 0x7E, 0x6E, 0x2F, 0x77, 0x4F, 0x7A, 0x71, 0x43,
  0x2B, 0x26, 0x89, 0xFE
]

key = [
  0x71, 0x61, 0x73, 0x78, 0x63, 0x79, 0x74, 0x67, 0x73, 0x61,
  0x73, 0x78, 0x63, 0x76, 0x72, 0x65, 0x66, 0x67, 0x68, 0x6E,
  0x72, 0x66, 0x67, 0x68, 0x6E, 0x6A, 0x65, 0x64, 0x66, 0x67,
  0x62, 0x68, 0x6E, 0x00
]

for i in range(len(enc)):
    print(chr((enc[i] ^ key[i]) % 256),end='')

'/$ 2(}!d''":/m-T<A*$INçþ

一堆乱码,看看有什么不对,发现s1的交叉引用居然有4个

找到了这个

再对这个函数进行交叉引用定位到

应该是做了一个初始化,改了S1的值,可以动态调试验证一下,这里我对s1下了个硬件断点,发现s1确实改变了

写解密代码:

python 复制代码
enc = [
  0x56, 0x4E, 0x57, 0x58, 0x51, 0x51, 0x09, 0x46, 0x17, 0x46,
  0x54, 0x5A, 0x59, 0x59, 0x1F, 0x48, 0x32, 0x5B, 0x6B, 0x7C,
  0x75, 0x6E, 0x7E, 0x6E, 0x2F, 0x77, 0x4F, 0x7A, 0x71, 0x43,
  0x2B, 0x26, 0x89, 0xFE
]

key = [
  0x71, 0x61, 0x73, 0x78, 0x63, 0x79, 0x74, 0x67, 0x73, 0x61,
  0x73, 0x78, 0x63, 0x76, 0x72, 0x65, 0x66, 0x67, 0x68, 0x6E,
  0x72, 0x66, 0x67, 0x68, 0x6E, 0x6A, 0x65, 0x64, 0x66, 0x67,
  0x62, 0x68, 0x6E, 0x00
]

for i in range(len(enc)):
    print(chr((enc[i] ^ (2 * i + 65)^ key[i]) % 256),end='')

print(chr((enc[i] ^ (2 * i + 65)^ key[i]) % 256),end='')

flag{c0n5truct0r5_functi0n_in_41f}
相关推荐
cdprinter9 分钟前
涉密行业跨网数据摆渡,光盘审计刻录输出,生产音视频刻录,电子档案长期保存应用
安全·自动化·音视频
挥剑决浮云 -1 小时前
STM32学习之 按键/光敏电阻 控制 LED/蜂鸣器
c语言·经验分享·stm32·单片机·嵌入式硬件·学习
zfenggo1 小时前
c/c++ 无法跳转定义
c语言·开发语言·c++
图灵猿1 小时前
【Lua之·Lua与C/C++交互·Lua CAPI访问栈操作】
c语言·c++·lua
daopuyun1 小时前
GB/T34944-2017 《Java语言源代码漏洞测试规范》解读——安全功能
java·开发语言·安全
A懿轩A2 小时前
C/C++ 数据结构与算法【树和二叉树】 树和二叉树,二叉树先中后序遍历详细解析【日常学习,考研必备】带图+详细代码
c语言·数据结构·c++·学习·二叉树·
群联云防护小杜2 小时前
服务器被攻击怎么办
运维·服务器·网络·网络协议·安全·web安全
利哥AI实例探险2 小时前
建筑工地AI安全检测系统:YOLO11数据标注训练与PyQt5界面设计应用开发
人工智能·qt·安全
安胜ANSCEN2 小时前
数据流动背后的“暗流涌动”,企业如何借助多源威胁检测响应高效捕捉安全威胁?
安全
raysync8884 小时前
替代传统FTP传输,镭速大数据传输系统实现安全高效数据流转!
开发语言·安全·php