看到一个if语句,以及判断的条件推测这就是得到flag的条件(用1和0来判断8个灯的亮灭)
当8个灯都亮的时候就输出flag,这里跟进sub_457AB4()
其实可以根据这个[0-7]应该是能猜测按1-8的
继续跳转,看到提示,flag就在这里
根据算法写出脚本
c语言脚本
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int a[] = {18,64,98,5,2,4,6,3,6,48,49,65,32,12,48,65,31,78,62,32,49,32,
1,57,96,3,21,9,4,62,3,5,4,1,2,3,44,65,78,32,16,97,54,16,44,
52,32,64,89,45,32,65,15,34,18,16,0};
int b[] = {123,32,18,98,119,108,65,41,124,80,125,38,124,111,74,49,
83,108,94,108,84,6,96,83,44,121,104,110,32,95,117,101,99,
123,127,119,96,48,107,71,92,29,81,107,90,85,64,12,43,76,86,
13,114,1,117,126,0};
for (int i = 0; i < 56; ++i)
{
b[i] ^= a[i];
b[i] ^= 0x13;
printf("%c",b[i]);
}
return 0;
}
python脚本
a=[123,32,18,98,119,108,65,41,124,80,125,38,124,111,74,49,83,108,94,108,84,6,96,83,44,121,104,110,32,95,117,101,99,123,127,119,96,48,107,71,92,29,81,107,90,85,64,12,43,76,86,13,114,1,117,126,0]
b=[ 18, 64, 98, 5, 2, 4, 6, 3, 6, 48, 49, 65, 32, 12, 48, 65, 31, 78, 62, 32, 49, 32, 1, 57, 96, 3, 21, 9, 4, 62, 3, 5, 4, 1, 2, 3, 44, 65, 78, 32, 16,97,54,16,44,52,32,64,89,45,32,65,15,34,18,16,0]
for i in range(57): # 57次循环 0~56 前包后不包
a[i]=a[i]^b[i]
a[i]=a[i]^19
print(chr(a[i]),end='') #转化为字符类型,不想让他换行后面加end=''
题目更改了脚本异或的地方不一样
看写脚本思路就好