逆向攻防世界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}
相关推荐
小小代码狗9 分钟前
PHP 常用函数与变量参考文档
开发语言·安全·php
笨鸟先飞,勤能补拙42 分钟前
下一个十年:网络安全正在被重写
网络·人工智能·安全·web安全·网络安全·github
月光船幽幽1 小时前
安全域公理:连续与脉冲扰动的量化约束
科技·安全
亿道电子Emdoor1 小时前
【Arm】MSP和PSP的区别简介
c语言·arm开发·单片机·mcu
2301_777998341 小时前
Linux线程同步与互斥(三):信号量与环形队列实现生产者消费者模型
linux·c语言·c++
c238562 小时前
《枚举算法 “翻译官”:用 enum class 给 “游游的礼盒” 算分》
c语言·c++·算法
noipp2 小时前
推荐题目:洛谷 P5843 [SCOI2012] Blinker 的噩梦
c语言·数据结构·c++·算法·游戏·洛谷·luogu
各类产品分享2 小时前
化工园区做AR安全巡检推荐哪家供应商
安全·ar·ar智慧运维解决方案
米瑞格门窗2 小时前
上海系统门窗哪个靠谱
大数据·人工智能·安全·家装·家装建材·系统门窗
冻柠檬飞冰走茶2 小时前
PTA基础编程题目集 7-20 打印九九口诀表(C语言实现)
c语言·开发语言·数据结构·算法