BUUCTF reverse [GUET-CTF2019]number_game

打开IDA64进行分析,进入main函数。

进入sub_4006D6函数,这个函数是对用户输入的字符进行验证,长度小于10并且只能输入0~4的字符。

然后进入下面的两个函数,看了半天没搞懂这两个函数是干啥的,接着往下分析。

sub_400881这个函数是将经过转换完赋值给这些字节,就是将这些#都换成转换完的数据

sub_400917这个函数是个验证函数,表示没有看懂操作,经过看大佬的wp才发现原来是个数独。根据上一个给#赋值的操作,我们可以推测应该是给数独填数。我们进行动态调试。

输入0123456789后运行步过加密函数查看v7,发现他们的对应关系。

0123456789
7381940526

根据数独可知要填入的十个数是0,4,2,1,4,2,1,4,3,0

贴出脚本

arr=[48, 52, 50, 49, 52, 50, 49, 52, 51, 48,0]
biao=[7,3,8,1,9,4,0,5,2,6]
flag=[0]*10
for i in range(10):
    flag[biao[i]] = arr[i];

print(flag)

flag{1134240024}

posted @ 2021-01-26 15:18  Sk2rw  阅读(218)  评论(0编辑  收藏  举报