BUUCTF [MRCTF2020]Xor

将文件拖入ida shift+F12查看可疑字符串

看到flag双击跟进 main函数 但是发现main函数不能F5编译 提示401095 于是先找到401095

双击点进函数

发现main函数可以查看伪c代码了

这段代码的核心在于找到一个长度为27个字符的字符串,使得该字符串的每个字符与其索引的异或结果等于byte_41EA08数组中相应位置的字符。

对于每个字符,程序将其索引(作为无符号8位整数)与用户输入的相应字符进行异或操作,并将结果与byte_41EA08数组中相应位置的字符进行比较。如果所有字符都满足这个条件(即异或结果与byte_41EA08中的值相等),则继续执行;否则,跳转到LABEL_6执行错误处理。

直接编写反脚本

byte_41EA08 = [
    0X4D,0X53,0X41,0X57,0X42,0X7E,0X46,0X58,0X5A,0X3A,0X4A,0X3A,0X60,0X74,0X51,0X4A,0X22,0X4E,0X40,0X20,0X62,0X70,0X64,0X64,0X7D,0X38,0X67
]

# 初始化一个空字符串来存储结果
flag = ""

# 遍历索引0到26
for i in range(27):

    xor_result = chr(byte_41EA08[i] ^ i)  # 将异或结果转换为字符
    flag += xor_result  # 将结果添加到flag字符串中


print(flag)

得到flag

flag{@_R3@1ly_E2_R3verse!}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值