CTF

安恒元旦月赛逆向--扫雷

Posted on 2020-01-23,2 min read

就是一个扫雷。IDA64位打开即可
下载地址:https://github.com/guokeya/tools/raw/master/%E6%89%AB%E9%9B%B7.exe


代码非常多。主要看最后几行。有if判断

第一个判断game如果!=601就设置为1
就没有else了。这应该是初始化之类。game为排雷数
第二个判断。game==1.就 printf(asc_4861F8)
我们来看下asc_4861F8这里是个啥。双击进入

if game==1{
    输出游戏结束
}else{
    调用re(函数)
}

那么re()函数。十有八九是输出flag的
进入re函数

如果game=601。说明扫出了所有雷。输入flag

调用for循环。将flaga中的数据。依次减j。j等于4时。清空为0
接着看flaga中的数据是啥。j在前面并没有赋值。那么j初始值又是什么
分别点进去看看
flaga内容如下

j的初始值内容如下

python还原下

a=[0x67,0x6E,0x64,0x67,0x7C,0x67,0x34,0x30,0x62,0x66,0x66,0x33,0x3a,0x36,0x3C,0x62,0x62,0x37,0x3C,0x61,0x63,0x64,0x68,0x35,0x37,0x67,0x33,0x35,0x38,0x68,0x35,0x30,0x67,0x3A,0x3B,0x33,0x66,0x7F,0x26]
j=1
for i in range(len(a)):
    a[i]=a[i]-j
    j+=1
    if(j==4):
        j=0
for i in a:
    print(chr(i),end='')

得到flag

下一篇: Misc中各种加密特征→