【MRCTF2020】Xor(buuctf-re)

buuctf做题记录

查壳

pe
无壳32位

IDA反编译

试图直接对main函数反编译会弹出提示:
错误
所以查看401095处的汇编:
401095
点进sub_401020,F5反编译:
在这里插入图片描述
在这里插入图片描述
返回main函数处,再次F5,反编译成功:
在这里插入图片描述
方法指导

分析

简单分析,函数有printf,scanf,system等,进行一个重命名和隐藏不需要的显示,逻辑就很清晰了:
在这里插入图片描述
首先判断是否输入33个字符
然后对每个字符按从0到32的索引号对该字符进行异或
最后将异或后的字符与byte_41EA08比较,相同就输出Right
查看byte_41EA08内容:
在这里插入图片描述
注意不要漏掉4D(‘M’)
写个简单的C++脚本吧:

#include<iostream>
using namespace std;
int main()
{
	int c[] = {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};
	for(int i=0;i<33;i++)cout << (char)(c[i]^i);
}

得到flag:
在这里插入图片描述
buuctf的要求是包上flag{}
所以提交falg:
flag{@_R3@1ly_E2_R3verse!}

小记

摸鱼后的复建,慢慢来吧()

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值