惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Recent Announcements
Recent Announcements
V
Visual Studio Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
云风的 BLOG
云风的 BLOG
Microsoft Security Blog
Microsoft Security Blog
博客园 - 司徒正美
Y
Y Combinator Blog
Stack Overflow Blog
Stack Overflow Blog
雷峰网
雷峰网
小众软件
小众软件
GbyAI
GbyAI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
aimingoo的专栏
aimingoo的专栏
MyScale Blog
MyScale Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
腾讯CDC
A
About on SuperTechFans
宝玉的分享
宝玉的分享
WordPress大学
WordPress大学
B
Blog RSS Feed
G
Google Developers Blog
量子位
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - 三生石上(FineUI控件)

Mox的笔记库

2026PPoPP MLIR Tutorial学习 | Mox的笔记库 MacOS配置《明日方舟:终末地》 | Mox的笔记库 2025:向内生长 | Mox的笔记库 由mlir::ExecutionEngine引发的跨系统问题 | Mox的笔记库 WSL2配置Cuda-Tile环境记录(未完待续) | Mox的笔记库 Vibe Coding手搓项目记录 | Mox的笔记库 给Debian上包——以DuckDB为例 | Mox的笔记库 UCPD.sys事件存档 | Mox的笔记库 换新电脑之Mac mini M4从购买到配置 | Mox的笔记库 Mac配置MLX-C开发环境 | Mox的笔记库 RISC-V meets RDBMS——RISC-V架构上可运行数据库一览 | Mox的笔记库 DuckDB Sort实现调查 | Mox的笔记库 修复Redis在树莓派5上无法运行的问题 | Mox的笔记库 如何在MLIR中自定义类型并且输出运行 | Mox的笔记库 网站网络结构变更记录 | Mox的笔记库 EDBT25论文阅读:PhoebeDB——A Disk-Based RDBMS Kernel for High-Performance and Cost-Effective OLTP SIGMOD25论文阅读:BPF-DB:——A Kernel-Embedded Transactional Database Management System For eBPF Applications Apache Arrow Gandiva项目解析 | Mox的笔记库 VLDB24论文阅读:Cloud-Native Database Systems and Unikernels——Reimagining OS Abstractions for Modern Hardware NoisePage源码分析(未完待续) | Mox的笔记库 VLDB20论文阅读:Mainlining Databases——Supporting Fast Transactional Workloads on Universal Columnar Data File Formats VLDB17论文阅读:Relaxed Operator Fusion for In-Memory Databases:Making Compilation, Vectorization, and Prefetching Work Together At Last 论文阅读:How not to structure your database-backed web applications——a study of performance bugs in the wild SIGMOD24阅读:ROME——Robust Query Optimization via Parallel Multi-Plan Execution 文章阅读:First Past the Post-Evaluating Query Optimization in MongoDB SIGMOD文章阅读:Apache Calcite——A Foundational Framework for Optimized Query Processing Over Heterogeneous Data Sources VLDB23论文阅读:Analyzing the Impact of Cardinality Estimation on Execution Plans in Microsoft SQL Server SIGMOD22论文阅读:Efficient Massively Parallel Join Optimization for Large Queries VLDB论文阅读:Weaving Relations for Cache Performance VLDB22论文阅读:ConnectorX——Accelerating Data Loading From Databases to Dataframes
长安杯2021-snake复现 | Mox的笔记库
MocusEZ · 2022-08-21 · via Mox的笔记库

这次复现可以加强对IDA使用的理解

全网只搜到了这个人的文章:

2021长安杯—snake题解

另外一篇是这个人在博客园上的发帖

整个复现过程并不顺利,因为帖子只讲了原理,没有具体到步骤的介绍,IDA操作不熟练直接GG,我摸索了一天才复现成功。

最主要的地方在于,那篇帖子其实是用了IDA的远程调试的,然而通篇没有任何提示。静态分析完以后,发现也可以直接静态patch出解

环境准备

IDA Pro 7.6

无keypatch插件

正文

在NSSCTF下载附件

把文件拖进IDA64分析逻辑

image.png

在一个while(1)里,有三个跳到LABEL13(Game Over),可以进行修改(尽管从结果来看并没有必要),里面有个LABEL17可以跳出循环

这里就会遇到第一种情况:F5后的C语言是不能直接修改汇编的

这时候,你需要先开启一个子窗口

view-open subviews-disassembly

右键选择Synchronize with,这样C语言的指令就会导向汇编的窗口,就可以在汇编的窗口上面打补丁

image.png

就会产生绿色的光标,与右边同步

image.png

由于中间太长,直接跳到最下面,有一个calc_flag引起了注意

image.png

这个函数会打印flag,而唯一与控制打印有关系的是grid_mats,而grid_mats只跟wasd方向键有关系

image.png

找前面流程,判断条件是v82会有可能导致重回while(1)循环里面

image.png

这个 v79!=200 下面,是一个非常长的循环内容(if就是循环的判断条件),贴到VScode里会发现有其内容从177-455,就是贪吃蛇的主体内容,由此可以判断这个v79是判断level数的

image.png

因为show_score的传参正是v79

image.png

当时脑袋一热,直接把200改成1,然后喜提假flag,到NSSCTF上面提交老半天不过

2022-08-19_11-15.png

猜一下,估计是wasd按的数量不足导致的,就是金币必须吃足,而且做到每吃一个金币,level都会提升,那就把v82取反即可。

image.png

但这样的速度还是太慢了,而且要是做到最后每录像就得重做,emmm

那就得让金币每走一步都能吃到

image.png

即不管怎么走,都能走到LABEL17里面。要达成这个目的两个判断条件取反即可

这样,只要狂按wasd,就能快速得到正确的flag

image.png

结语

由于没有key patch插件,需要鼠标手动patch,在Edit->Patch Program->Change bytes手动修改机器码

不知道机器码的,可以在这在线汇编生成器上找到提示

Online Assembler and Disassembler

为数不多有大收获的逆向题目,争取下一次配置好IDA远程调试的环境