逆向攻防世界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\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((enci ^ (2 * i + 65)^ keyi) % 256),end='')

复制代码
flag{c0n5truct0r5_functi0n_in_41f}
相关推荐
_Narcissus_2 小时前
动态规划初探(含完整代码实现)
c语言·数据结构·c++·算法·动态规划·背包问题·最短路径
Cerman2 小时前
QEMU启动OVMF shell超时分析
c语言·windows·经验分享
白猫不黑2 小时前
网络安全/信息安全专业学习路线与入行指南:从大学到岗位的完整规划
网络·学习·安全·web安全·网络安全·黑客技术
其实防守也摸鱼4 小时前
Codex破局:前端组件秒级生成的技术文章大纲
开发语言·前端·人工智能·学习·安全·web安全
_Narcissus_4 小时前
枚举和模拟算法笔记
c语言·数据结构·c++·笔记·算法·模拟·枚举
老当益壮梁奶奶5 小时前
Linux软件编程学习笔记(二)Linux文件IO编程入门:从fopen到fgetc
linux·c语言·c++·笔记·学习
sunoo-2295 小时前
C 语言文件 IO 全攻略:从基础函数到实战踩坑(BMP 读取 + 词典查询)
linux·c语言·前端·笔记·vscode·学习
上海控安6 小时前
实时系统保障关键技术-最坏情况执行时间(WCET)分析
测试工具·安全
网安蟹佬霸6 小时前
密码学安全实战:从加密原理到哈希破解的完整攻防指南
网络·算法·安全·web安全·开源·密码学·哈希算法
LuminousCPP7 小时前
栈和队列专题(四):LeetCode 232. 用栈实现队列|双栈分工 + 按需迁移 + 摊还 O(1)
c语言·数据结构·笔记·算法·leetcode