buuctf xor

解压获得两个文件

因为图中上方的文件只能在mac系统打开,在windows无法操作,所以我们解析xor文件

X86-64,所以是64位

1.将__b与global比较,若成立则输出“Success”;反之输出“Failed”

2.对__b数组进行加密操作,加密方法是后一位与前一位异或

3.判断__b的长度是否符合规范

4.执行get_line函数

5.初始化__b

跟进get_line函数

其中的read函数

经过简单分析,get_line函数的作用就是判断数组中的元素有没有等于10的,若有就把10换为0,并返回v3的值(0或-1)

看起来这个函数对我们找flag没有任何价值:因为__b数组内装的是字符串和符号,其ascii码都大于20,所以对__b数组没有任何作用

大致流程就是获取__b的值并进行加密,将加密后的字符串与global数组比较。

所以flag就是global中的字符串解密后的内容

跟进global

相信不少同学在看到aFKWOXZUPFVMDGH后就认为这是global的字符串,实际上还需跟进aFKWOXZUPFVMDGH才能看到真正的字符串

找到字符串后遍可以进行解密的写脚本操作

因为加密操作是异或,此操作有一个规律:当字符串进行偶数次异或操作时,得到的结果就是原字符串,所以我们对加密的字符串再进行一次异或操作后就可以得到原字符串

得到flag{QianQiuWanDai_YiTongJiangHu}

笔记:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值