[SUCTF2018]babyre.zip

根据字符串 搜索找到 程序输入位置,

发现 这个 程序 我们只用输入一个 key 程序就会进行

逻辑很简单。直接 可以 脚本爆破。

v4 = [0 for i in range(180)]
v4[0] = 2
v4[1] = 3
v4[2] = 2
v4[3] = 1
v4[4] = 4
v4[5] = 7
v4[6] = 4
v4[7] = 5
v4[8] = 0xA
v4[9] = 0xB
v4[10] = 0xA
v4[11] = 9
v4[12] = 0xE
v4[13] = 0xF
v4[14] = 0xC
v4[15] = 0xD
v4[16] = 0x10
v4[17] = 0x13
v4[18] = 0x10
v4[19] = 0x11
v4[20] = 0x14
v4[21] = 0x17
v4[22] = 0x16
v4[23] = 0x13
v4[24] = 0x1C
v4[25] = 0x19
v4[26] = 0x1E
v4[27] = 0x1F
v4[28] = 0x1C
v4[29] = 0x19
v4[30] = 0x1A
v4[31] = 0x1F
v4[32] = 0x24
v4[33] = 0x21
v4[34] = 0x22
v4[35] = 0x27
v4[36] = 0x24
v4[37] = 0x21
v4[38] = 0x22
v4[39] = 0x23
v4[40] = 0x28
v4[41] = 0x29
v4[42] = 0x2E
v4[43] = 0x2B
v4[44] = 0x24
v4[45] = 0x2D
v4[46] = 0x26
v4[47] = 0x2F
v4[48] = 0x38
v4[49] = 0x31
v4[50] = 0x3A
v4[51] = 0x3B
v4[52] = 0x34
v4[53] = 0x3D
v4[54] = 0x3E
v4[55] = 0x37
v4[56] = 0x30
v4[57] = 0x39
v4[58] = 0x32
v4[59] = 0x3B
v4[60] = 0x3C
v4[61] = 0x35
v4[62] = 0x36
v4[63] = 0x37
v4[64] = 0x48
v4[65] = 0x49
v4[66] = 0x42
v4[67] = 0x42
v4[68] = 0x44
v4[69] = 0x44
v4[70] = 0x46
v4[71] = 0x47
v4[72] = 0x48
v4[73] = 0x49
v4[74] = 0x4A
v4[75] = 0x4A
v4[76] = 0x4D
v4[77] = 0x4D
v4[78] = 0x4F
v4[79] = 0x4E
v4[80] = 0x50
v4[81] = 0x50
v4[82] = 0x52
v4[83] = 0x53
v4[84] = 0x55
v4[85] = 0x54
v4[86] = 0x56
v4[87] = 0x57
v4[88] = 0x59
v4[89] = 0x59
v4[90] = 0x5A
v4[91] = 0x5B
v4[92] = 0x5C
v4[93] = 0x5D
v4[94] = 0x5E
v4[95] = 0x5E
v4[96] = 0x60
v4[97] = 0x60
v4[98] = 0x63
v4[99] = 0x63
v4[100] = 0x64
v4[101] = 0x65
v4[102] = 0x67
v4[103] = 0x67
v4[104] = 0x69
v4[105] = 0x69
v4[106] = 0x6B
v4[107] = 0x6B
v4[108] = 0x6C
v4[109] = 0x6D
v4[110] = 0x6E
v4[111] = 0x6E
v4[112] = 0x70
v4[113] = 0x70
v4[114] = 0x72
v4[115] = 0x73
v4[116] = 0x74
v4[117] = 0x75
v4[118] = 0x77
v4[119] = 0x77
v4[120] = 0x78
v4[121] = 0x79
v4[122] = 0x7B
v4[123] = 0x7B
v4[124] = 0x7D
v4[125] = 0x7D
v4[126] = 0x7F
v4[127] = 0x7F
v4[128] = 0x81
v4[129] = 0x81
v4[130] = 0x83
v4[131] = 0x83
v4[132] = 0x8C
v4[133] = 0x8D
v4[134] = 0x8E
v4[135] = 0x8F
v4[136] = 0x88
v4[137] = 0x89
v4[138] = 0x8A
v4[139] = 0x8B
v4[140] = 0x8C
v4[141] = 0x8D
v4[142] = 0x8E
v4[143] = 0x87
v4[144] = 0x98
v4[145] = 0x91
v4[146] = 0x92
v4[147] = 0x93
v4[148] = 0x94
v4[149] = 0x95
v4[150] = 0x96
v4[151] = 0x97
v4[152] = 0x98
v4[153] = 0x99
v4[154] = 0x9A
v4[155] = 0x9A
v4[156] = 0x9C
v4[157] = 0x9C
v4[158] = 0x9E
v4[159] = 0x9E
v4[160] = 0xA0
v4[161] = 0xA0
v4[162] = 0xA2
v4[163] = 0xA2
v4[164] = 0xA4
v4[165] = 0xA4
v4[166] = 0xA6
v4[167] = 0xA6
v4[168] = 0xA8
v4[169] = 0xA8
v4[170] = 0xAA
v4[171] = 0xAA
v4[172] = 0xAC
v4[173] = 0xAC
v4[174] = 0xAE
v4[175] = 0xAE
v4[176] = 0xB0
v4[177] = 0xB1
v4[178] = 0xB2
v4[179] = 0xB3

for key in range(0xffff):
    # print key
    buf = [0 for i in range(0x1f)]
    flag =""
    v6 = 8
    while v6:
        v6 -= 1
        j = 22
        while j :
            j -= 1
            v9 = v4[22 * v6 + j]
            v10 = (v9 >> ((key >> 2 * v6) & 3)) &1
            buf[j] |= v10 << v6
    flag = "".join(map(chr,buf))
    if "SUCTF{" in flag:
        print flag

# SUCTF{Flag_8i7244980f}