buuctf刷题记录9 [BJDCTF2020]BJD hamburger competition

通过逆向工程和加密算法解析,从一个类似坦克大战的游戏程序中提取隐藏的Flag。利用dnspy工具,分析C#资源文件,解读SHA1和MD5加密过程,最终成功解密并获取到Flag{B8C37E33DEFDE51CF91E}

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

打开看是一整个程序,刚开始感觉和那个坦克大战有点像(小憨包笑死)

怀疑是根据选择不同的材料来达到某种条件然后输出flag

先找到c#的资源文件[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CWVsKeAd-1596099913405)(D:\markdown\文件\图片\7.1.1.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b0XjcDNA-1596099913407)(D:\markdown\文件\图片\7.1.2.png)]

dnspy打开

点开以后

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s0KB06xF-1596099913409)(D:\markdown\文件\图片\7.1.3.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SzYVRFK6-1596099913411)(D:\markdown\文件\图片\7.1.4.png)]

果然是根据根据点击材料来控制是否输出flag,但是直接看最后几段代码,发现flag先sha1加密进行判断,再输出时md5加密

根据他的数据可以反推出str,进而求解flag

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZDk9UFIg-1596099913413)(D:\markdown\文件\图片\7.1.5.png)]

str为1001,md5加密

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9vnnChoj-1596099913414)(D:\markdown\文件\图片\7.1.6.png)]

都试了一遍以后发现都不对,再看看代码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vjA0JbpX-1596099913415)(D:\markdown\文件\图片\7.1.7.png)]

他这个md5加密是取得前20个字母,Substring是截取字符串,Tostring(“X2”)是变成大写,对应的Tostring(“x2”)是变小写

所以肯定是32位,flag为 flag{B8C37E33DEFDE51CF91E}

### 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
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值