下载试题后解压,得到一个无后缀名的文件
1、先添加txt后缀,查看文件内容
看到了一些printf函数
查壳无有效信息
2、把文件放到ida64中分析
Shift+F12查看字符串,找到关键词
双击关键字,找到引用该字符串的地址
双击引用该字符串的地址,跳转到流程图界面
按F5,查看伪代码
关键语句是这条if判断句,因为字符串最后输出了Success,所以global和_b这两个字符串时相同的。
双击global,然后看到global字符串中的值
双击aFKWOXZUPFVMDGH
然后选中aFKWOXZUPFVMDGH
接着导出global的值 (可以按快捷键Shift+E,或者点击Edit—>Export data)
可以选择导出十进制或十六进制
这里我选择导出十进制的数据
编写脚本,进行异或运算
shua = [102, 10, 107, 12, 119, 38, 79, 46, 64, 17,
120, 13, 90, 59, 85, 17, 112, 25, 70, 31,
118, 34, 77, 35, 68, 14, 103, 6, 104, 15,
71, 50, 79, 0]
flag = chr(shua[0])
i = 1
while True:
if i < len(shua):
flag += chr(shua[i] ^ shua[i-1])
i += 1
else:
break
print(flag)
运行后结果
得到flag:flag{QianQiuWanDai_YiTongJiangHu}
过程总结
题目条件:
- 不是PE文件
做题步骤:
- 添加txt后缀,查看有无有效信息
- 使用查壳软件查壳,了解程序是多少位的(64位或32位)
- 使用ida进行分析(用Shift+F12查看一下字符串,寻找关键词(如flag等))
ida分析过程:
- Shift+F12查看一下字符串,寻找关键词(如flag等) ,如没有关键词,就在main函数里查找信息
- 双击字符串,查看包含该字符串的位置
- 查看引用该字符串的详细地址
- 使用F5反汇编,查看伪代码
- 分析伪代码(选中数字后按键盘“R”键,即可将数字转换为字符;选中变量后 ,按下键盘“X”键查看该变量的交叉引用)
- Shift+E可以导出变量的值
- 编写代码进行运算