Problem: [HGAME 2022 week1]easyasm
[[toc]]
思路
- 解题大致思路
16位DOS,只能看汇编

开头载入了两个数据dseg、seg001
往上翻可以找到
一个是提示字符

一个是密文

分析一下加密过程

把每个数前四位和后四位交换,再与23异或
构建解密脚本(注意还原后的结果%256,不然打不出来正确的结果)
EXP
- 具体攻击代码
*#easyasm
#0x91, 0x61, 0x01, 0xC1, 0x41,
#0xA0, 0x60, 0x41, 0xD1, 0x21,
#0x14, 0xC1, 0x41, 0xE2, 0x50,
#0xE1, 0xE2, 0x54, 0x20, 0xC1,
#0xE2, 0x60, 0x14, 0x30, 0xD1,
#0x51, 0xC0, 0x17
from Crypto.Util.number import *
enc=[0x91, 0x61, 0x01, 0xC1, 0x41,
0xA0, 0x60, 0x41, 0xD1, 0x21,
0x14, 0xC1, 0x41, 0xE2, 0x50,
0xE1, 0xE2, 0x54, 0x20, 0xC1,
0xE2, 0x60, 0x14, 0x30, 0xD1,
0x51, 0xC0, 0x17]
flag=b''
for i in enc:
flag += long_to_bytes((((i^23)<<4)+((i^23)>>4))%256)
print(flag)
总结
- 对该题的考点总结
