[BJDCTF2020]BJD hamburger competition-buuctf

这是一道unity逆向

unity逆向不管咋样,第一步找到多少位

直接告诉了

64位

dnspy打开

找到这里

简单的加密

sha1和md5

md5在线解密破解,md5解密加密 (cmd5.com)

一个网站解决

        

你输入可以发现不对

在MD5的函数中

你可以发现

appendX2

和读入20位

学到了

主要是这个X ,是用大写,那么是不是小x就是小写呢

嗯呢

flag='b8c37e33defde51cf91e1e03e51657da'
for i in range(20):
    if(flag[i].islower()):
        print(flag[i].upper(),end='')
        continue
    else:
        print(flag[i],end='')

我还想尝试一下改代码

在这里编辑方法

using System;
using UnityEngine;

// Token: 0x02000004 RID: 4
public partial class ButtonSpawnFruit : MonoBehaviour
{
	// Token: 0x0600000C RID: 12 RVA: 0x000021C8 File Offset: 0x000003C8
	public void Spawn()
	{
		FruitSpawner component = GameObject.FindWithTag("GameController").GetComponent<FruitSpawner>();
		if (component)
		{
			if (this.audioSources.Length != 0)
			{
				this.audioSources[UnityEngine.Random.Range(0, this.audioSources.Length)].Play();
			}
			component.Spawn(this.toSpawn);
			string name = this.toSpawn.name;
			if (name == "汉堡底" && Init.spawnCount == 0)
			{
				Init.secret += 997;
			}
			else if (name == "鸭屁股")
			{
				Init.secret -= 127;
			}
			else if (name == "胡罗贝")
			{
				Init.secret *= 3;
			}
			else if (name == "臭豆腐")
			{
				Init.secret ^= 18;
			}
			else if (name == "俘虏")
			{
				Init.secret += 29;
			}
			else if (name == "白拆")
			{
				Init.secret -= 47;
			}
			else if (name == "美汁汁")
			{
				Init.secret *= 5;
			}
			else if (name == "柠檬")
			{
				Init.secret ^= 87;
			}
			else if (true)
			{
				Init.secret ^= 127;
				string str = Init.secret.ToString();
				if (true)
				{
					this.result = "BJDCTF{" + ButtonSpawnFruit.Md5(str) + "}";
					Debug.Log(this.result);
				}
			}
			Init.spawnCount++;
			Debug.Log(Init.secret);
			Debug.Log(Init.spawnCount);
		}
	}
}

还没没成功,没深究,掌握了改代码就行

### BJD CTF 2020 BabyROP2 Writeup #### 题目概述 BabyROP2 是一道典型的 Return-Oriented Programming (ROP) 类型题目,主要考察参赛者对于 ROP 技术的理解以及利用漏洞执行任意代码的能力。 #### 利用技术分析 在该挑战中,`init` 函数提供了重要的提示信息[^4]。通过快速浏览反编译后的二进制文件代码可以确认这是一个 ret2libc 的攻击场景。具体来说: - `puts` 被用来泄露库函数的真实加载地址; - 计算目标系统调用(如 system 和 /bin/sh)相对于已知泄漏地址的位置偏移量; - 构造恶意输入数据覆盖返回地址链,从而实现控制程序流的目的; #### 实际操作步骤说明 为了成功完成此题目的解答,需要采取如下措施来构建有效的 payload 并触发远程命令执行: 1. 使用工具定位 libc 中的关键 gadget 地址; 2. 发送请求以获取服务器端实际使用的动态链接器基址; 3. 基于上述信息调整本地测试环境配置使之匹配远端状况; 4. 编写并发送精心设计的数据包给服务端,其中包含正确设置好的栈帧结构及必要的参数传递方式; ```python from pwn import * # 远程连接到CTF平台上的babyrop2服务 conn = remote('challenge.ctf.games', PORT) # ... (省略部分细节) payload = b'A' * OFFSET_TO_RETURN_ADDR \ + pack(system_addr, 'little') \ # 将system()的地址放入返回地址处 + pack(bin_sh_str_addr, 'little')\ # 参数"/bin/sh"字符串指针作为第一个参数传入system() conn.sendline(payload) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

name_name123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值