霍雅
追求源于热爱,极致源于梦想!
直接IDA32打开发现plz enter the flag和一串特殊字符
双击进去查看这个特殊字符,按X查看调用情况,发现主函数main调用
简单解释一下V7=用户输入
V12数组的长度等于V7
判断V7不为空,继续判断V12数组是否等于13
成立就跳出,下面的部分是干扰代码
之后的判断V12数值下标等于之前特殊字符Byte_415768数值V10的下标,下标在一开始就看到了,长度位17,所以前13位就是数值下标对应的特殊字符Byte_415768
写脚本可得KEY{e2s6ry3r5s8f6
str = "KfxEeft}f{gyrYgthtyhifsjei53UUrrr_t2cdsef66246087138\\0087138"
v10 = [1, 4, 14, 10, 5, 36, 23, 42, 13, 19, 28, 13, 27, 39, 48, 41, 42, 26, 20, 59, 4, 0]
# 从1开始提取字符
result = [str[i - 1] for i in v10] # 将索引减去 1
print(result)
很显然这不是完整flag,代码往下看,可以看到关键语句
if ( v12[17] != 49 || v12[18] != 48 || v12[19] != 50 || v12[20] != 52 || v12[21] != 125 )
意思是V12[17,18,19,20,12]的值不为49,48,50,52,125就输出\r\n也就是结束,因为125超出数组长度,所以这五个值是ascii码,也就是1024}
所以最终flag为:KEY{e2s6ry3r5s8f61024}