其他分享
首页 > 其他分享> > BJD hamburger competition

BJD hamburger competition

作者:互联网

buu练题记录2

这个题比较有意思,内部的代码比较简单,但是包装在一个Unity3D游戏中。

image-20210331185503124

关于Unity逆向看这里:Unity游戏逆向及破解方法介绍

0x00分析

所以就找对文件就OK了,这里我们找到Managed文件夹下的Assembly-CSharp.dll文件。这里我们需要用反编译和分析dll代码的工具:ILSpy或者dnSpy(这里我是用dnspy)

在函数ButtonSpawnFruit中发现端倪:

image-20210331185753207

可以看到flag就藏在str里面,将DD01903921EA24941C26A48F2CEC24E0BB0E8CC7通过sha1解码得:1001。再将1001 进行MD5加密:

image-20210331190056427

可以看到这里总共有4种结果。再仔细看看代码,就可以找到:

image-20210331190255423

可以看到这里有两个很重要的点:

所以构建出flag为BJDCTF{B8C37E33DEFDE51CF91E}。由于是buu平台所以是flag{B8C37E33DEFDE51CF91E}

0x01总结

个人习惯在做题是用txt保留记录,整理一下就是基本思路:

image-20210331191002227

0x02插曲

在看到源码之后我最开始想尝试能不能通过直接玩游戏玩出来,但是然后写了一个爆破的exp

def humburger(Init,i):
    if i == 1:
        Init += 997
    elif i == 2:
        Init -= 127
    elif i == 3:
        Init *= 3
    elif i == 4:
        Init ^= 18
    elif i == 5:
        Init += 29
    elif i == 6:
        Init -= 47
    elif i == 7:
        Init *= 5
    elif i == 8:
        Init ^= 87
    elif i == 9:
        Init ^= 127

    return Init

for j in range(111111,200000):
    Init = 0
    chu = 100000
    for k in range(5):
        step = int(j/chu)%10
        Init = humburger(Init,step)
        chu = int(chu/10)
    if Init == 1001:
        print(j)
    if j == 123459 or j == 134579:
        print(Init)

然而并没有跑出来,这出题人也太狗了,打他~

标签:elif,BJD,hamburger,这里,flag,competition,Init,chu,1001
来源: https://blog.csdn.net/qq_45892237/article/details/115358167