BUUCTF Reverse/[BJDCTF2020]BJD hamburger competition

下载得到一个unity3d游戏

运行是一个老八吃汉堡小游戏(建议搭配耳机食用)

打开这个目录
BJD hamburger competition_Data\Managed,然后找到Assembly-CSharp.dill这个文件,用NET-Reflector打开。(unity在打包后,会将所有的代码打进一个Assembly-CSharp.dll的文件里面,通过这个文件的反编译,就能详细看见里面的代码内容)


找到有关食物的模块

看到flag的输出条件

分析代码
public void Spawn()
{
FruitSpawner component = GameObject.FindWithTag("GameController").GetComponent<FruitSpawner>();
if (component)
{
if (this.audioSources.Length != 0)
{
this.audioSources[Random.Range(0, this.audioSources.Length)].Play();
}
component.Spawn(this.toSpawn);
string name = this.toSpawn.name;
if ((name == "汉堡底") && (Init.spawnCount == 0))
{
Init.secret += 0x3e5;
}
else if (name == "鸭屁股")
{
Init.secret -= 0x7f;
}
else if (name == "胡罗贝")
{
Init.secret *= 3;
}

通过反编译Unity3D游戏中的Assembly-CSharp.dll文件,解析出特定的食物组合触发flag的输出条件。利用SHA1和MD5加密算法计算出正确的flag。
5327

被折叠的 条评论
为什么被折叠?



