解压获得两个文件
因为图中上方的文件只能在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}
笔记: