[SCTF2019]Who is he

unity 游戏,直接输入字符串

直接修改 if 判断,看能不能直接输出flag

修改了程序逻辑,但还是输出了

明明已经把这个 if 删了

不知道为什么还会输出这串字符

应该程序还有什么引入吧,看 wp 应该先查一下程序的动态链接库 

DLL 是一个包含可由多个程序同时使用的代码和数据的库

动态链接,就是把一些经常会共享的代码(静态链接的OBJ程序库)制作成DLL档,当可执行文件调用到DLL档内的函数时,Windows操作系统才会把DLL档加载存储器内,DLL档本身的结构就是可执行档,当程序有需求时函数才进行链接。通过动态链接方式,存储器浪费的情形将可大幅降低。静态链接库则是直接链接到可执行文件。

静态库:二进制文件(通常扩展名为.LIB)和应用程序的其他模块组合起来创建最终的可执行文件(.EXE文件)

动态库:往往提供两个文件:一个引入库(.lib)文件和一个DLL (.dll) 文件

当某个程序或 DLL 使用其他 DLL 中的 DLL 函数时,就会创建依赖项。 该程序不再是独立的,并且如果该依赖项被损坏,该程序就可能遇到问题。 例如,如果发生下列操作之一,则该程序可能无法运行:

  • 依赖 DLL 升级到新版本。
  • 修复了依赖 DLL。
  • 依赖 DLL 被其早期版本覆盖。
  • 从计算机中删除了依赖 DLL。

这些操作通常称为 DLL 冲突。

这个函数把字符串str先base64解码再des解密

注意,在C#中,字符串默认是Unicode(utf-16)字符串,所以转成字节数组,在每个字符字节后都要加一个"\x00"

# python3
import base64
from Crypto.Cipher import DES

encryptData = "1Tsy0ZGotyMinSpxqYzVBWnfMdUcqCMLu0MA+22Jnp+MNwLHvYuFToxRQr0c+ONZc6Q7L0EAmzbycqobZHh4H23U4WDTNmmXwusW4E+SZjygsntGkO2sGA=="
e = base64.b64decode(encryptData)
keyiv = b"1\x002\x003\x004\x00"

d = DES.new(keyiv, DES.MODE_CBC, keyiv)
print(d.decrypt(e).decode("utf-16"))
# He_P1ay_Basketball_Very_We11!Hahahahaha!

提交不对

patch Assembly-CSharp.dll,发现不论怎么改(比如直接弹出 flag、输入框的内容改为 flag),程序都没有变动,于是猜测按钮部分的功能在另外的 dll 中进行了实现。来到 Data/Managed 目录下,按修改日期对所有 dll 进行排序:

继续用 dnspy 打开 ,没有什么用

看 wp 是要用 CE 打开,

没有 .NET好看

这个和 Assembly-Csharp 很像

撕,为什么不能运行

import base64
from Crypto.Cipher import DES

encryptData = "xZWDZaKEhWNMCbiGYPBIlY3+arozO9zonwrYLiVL4njSez2RYM2WwsGnsnjCDnHs7N43aFvNE54noSadP9F8eEpvTs5QPG+KL0TDE/40nbU="
e = base64.b64decode(encryptData)
keyiv = b"t\x00e\x00s\x00t\x00"

d = DES.new(keyiv, DES.MODE_CBC, keyiv)
print(d.decrypt(e).decode("utf-16"))

还有直接 CE 暴力搜索的

别人扫了五六个,我就两个,不知道为啥

from pyDes import des,PAD_PKCS5,CBC
import base64
s1=base64.b64decode('q+w89Y22rObfzxgsquc5Qxbbh9ZIAHET/NncmiqEo67RrDvz34cdAk0BalKWhJGl2CBYMlr8pPA=')
key1=''.join(['1','\x00','2','\x00','3','\x00','4','\x00'])
des_obj=des(key1,CBC,key1,padmode=PAD_PKCS5)
m=des_obj.decrypt(s1)
print(m.decode('UTF-16'))
s2=base64.b64decode('xZWDZaKEhWNMCbiGYPBIlY3+arozO9zonwrYLiVL4njSez2RYM2WwsGnsnjCDnHs7N43aFvNE54noSadP9F8eEpvTs5QPG+KL0TDE/40nbU=')
key2=''.join(['t','\x00','e','\x00','s','\x00','t','\x00'])
des_obj=des(key2,CBC,key2,padmode=PAD_PKCS5)
m=des_obj.decrypt(s2)
print(m.decode('UTF-16'))

也得到了key , data.

最后来看一下 AES 和 DES

from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes

# 16字节密钥(AES-128)
key = b'16bytekey1234567'
# 16字节随机生成的IV
iv = get_random_bytes(16)

# 创建一个AES对象,使用CBC模式
cipher = AES.new(key, AES.MODE_CBC, iv)
from Crypto.Cipher import DES
from Crypto.Random import get_random_bytes

# 8字节密钥
key = b'8bytekey'
# 8字节随机生成的IV
iv = get_random_bytes(8)

# 创建一个DES对象,使用CBC模式
d = DES.new(key, DES.MODE_CBC, iv)

AES key可以是 16,24,32位。

DES必须 8 位

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/657711.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

探讨大米自动化生产线包装设备的智能化发展趋势

随着科技的飞速发展,智能化已经成为各行各业转型升级的重要方向。在大米生产领域,自动化生产线包装设备的智能化发展更是引领着粮食产业的未来潮流。星派将从智能化技术、市场需求、发展趋势等方面,探讨大米自动化生产线包装设备的智能化发展…

22.Volatile原理

文章目录 Volatile原理1.Volatile语义中的内存屏障1.1.volatile写操作的内存屏障1.1.1.StoreStore 屏障1.1.2.StoreLoad 屏障 1.2.volatile读操作的内存屏障1.2.1.LoadStore屏障1.2.2.LoadLoad屏障 2.volatile不具备原子性2.1.原理 Volatile原理 1.Volatile语义中的内存屏障 在…

多模态大模型:系统、趋势与问题

引言 多模态大模型是当今人工智能领域的热门方向之一。它不仅能处理文本,还能理解和生成图像、视频、语音等多种模态的数据。这种能力使得多模态大模型在自然语言处理、计算机视觉等多个领域展示出巨大的潜力和应用价值。那么,多模态大模型是如何训练出…

web自动化-数据驱动与失败用例截图、失败重新运行

因为只有失败的用例需要截图,那么问题就是: 什么时候用例会失败? 数据驱动测试 我们前面覆盖到的用例都是正常的用例,如果要测试异常的用例呢? 我们来写一下登录的异常 场景:【login_page】 # 用户输入框…

vivado设置Vscode为默认编辑器

D:\vscode\Microsoft VS Code\Code.exe -g [file name]:[line number]

开源大模型与闭源大模型:谁将引领AI的未来?

前言 在AI领域,开源大模型和闭源大模型一直并存,各自有其独特的优势和挑战。下面,我们将从数据隐私、商业应用和社区参与三个方向,对这两种模型进行深入探讨。 一、数据隐私 开源大模型: 1. 透明度高: …

YoloV8实战:各种图绘制汇总(mAP50、mAP50-95、loss、PR_curve、F1_curve)|科研必备|绘图神器

摘要 本文的内容是告诉大家如何绘制mAP50、mAP50-95、loss、PR_curve、F1_curve等图像,方便大家写论文。 绘制mAP50、mAP50-95、loss等图。 先上效果,如下图: 首先将,训练的result.csv汇总到一个文件夹下面(这样方便寻找),要不然找起来太麻烦。如下图: 我都放到re…

The Sandbox 和 Bitkub 联手增强东南亚元宇宙中心

作为去中心化游戏虚拟世界和区块链平台的先驱,The Sandbox 正与泰国领先的区块链网络 Bitkub Blockchain Technology Co., Ltd. 展开创新合作。双方合作的目的是将Bitkub元宇宙的影响力扩展到The Sandbox,建立一个元宇宙中心,向用户承诺从 Bi…

5.28学习总结

java复习总结 hashcode()和equals() hashcode():在Object里这个方法是通过返回地址的整数值来生成哈希值。 equals():在Object里这个方法是通过比较他们的内存地址来确定两个对象是否相同。 运行效率:hashcode的时间复杂度为O(1)(因为只要计算一次哈…

搜维尔科技:【系统集成案例】三面CAVE系统案例

用户名称:成都东软学院 主要产品:工业激光投影机、光学跟踪系统、主动立体眼镜、主动式立体眼镜发生器 在4米x9米的空间内,通过三通道立体成像,对立体模型进行数字化验证,辅助unity课程设计。 立体投影大屏方案采用的…

颈源性头痛症状及表

颈源性头痛一般表现为,就是说从枕后一直颞侧,到太阳穴附近,这个是枕小的一个疼痛,还有一部分人从枕后,沿着一个弧线(如下图)的轨迹到了前额,到我们前额,这样一个疼痛&…

Aleth-NeRF: Illumination Adaptive NeRF with Concealing Field Assumption

Abstract Aleth-NeRF: 带有隐蔽场假设的照明自适应 NeRF 照明照明标准的神经辐射场(NeRF)范例采用了一种以观察者为中心的方法,将光照和材料反射的各个方面仅仅从3D 点发射纠缠在一起。这种简化的渲染方法在准确建模在不利光照条件下捕获的图像方面提出了挑战,如弱光或过度曝…

MFC 发起 HTTP Post 请求 发送MES消息

文章目录 获取Token将获取的Token写入JSON文件 将测试参数发送到http首先将测试参数写入到TestData.JSON文件rapidjson 库需要将CString 进行类型转换才能使用,将CString 转换为const char* 发送JSON 参数到http中,并且获取返回结果写入TestFinish.JSON文…

vue3 使用css实现一个弧形选中角标样式

文章目录 1. 实现效果2. 实现demo 在前端开发中,ui同学经常会设计这样的样式,用于区分选中的状态 下面抽空简单些了一下,记录下,后面直接复制用 1. 实现效果 实现一个菜单切换,右下角有个角标的样式 2. 实现demo 主要…

【Qt QML】Dialog组件

带有标准按钮和标题的弹出对话框,用于与用户进行短期交互。 这个描述指的是一个常见的用户界面元素,即一个临时弹出的窗口(或对话框),它包含一个标题,显示对话框的用途或内容描述,以及一系列标…

学习笔记——动态路由协议——OSPF(OSPF区域)

四、OSPF区域 OSPF路由器在同一个区域(Area)内网络中泛红LSA(链路状态通告)。为了确保每台路由器都拥有对网络拓扑的一致认知,LSDB需要在区域内进行同步。如果OSPF域仅有一个区域,随着网络规模越来越大,LSDB越来越庞大,OSPF路由器…

走进智慧仓储:3D可视化工厂园区革新物流新纪元

在快节奏的现代生活中,物流仓储行业扮演着至关重要的角色。随着科技的飞速发展,传统仓储模式正面临一场前所未有的变革。今天,就让我们一起看看3D可视化技术如何为物流行业带来前所未有的便利与效率。 什么是3D可视化工厂园区? 3…

flowable6springboot2 工作流从入门到精通

相关文档 https://tkjohn.github.io/flowable-userguide/ 文档手册 https://github.com/flowable/flowable-engine/releases/tag/flowable-6.8.0 flowable-ui下载地址 https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.100/bin/apache-tomcat-8.5.100.zip tomcat下载 百度网盘…

效率工作:一键为多种资产添加统一材质(小插件)

1.需求分析: 当导入一批资产,或者有同一批结构体需要添加相同材质时,单独为每个模型都添加材质费时费力,有没有什么办法,能同时为多个资产添加材质。 2.操作实现 1.在网上找到了一款插件,经过验证&#xf…

SQL2017附加从其他电脑复制过来的mdf数据后出现【只读】无法写入数据

1. 尝试给它所在的文件夹的属性中的“只读”去勾,无果。 2. 其他文章提示是文件的问题。 该错误为文件权限错误,找到该数据库的 数据库文件 和 日志文件,在安全中添加 Authenticated Users 用户的权限,并设置 “完全控制”