Reverse-elrond32

目录

前言

题目描述

Writeup

关键代码定位

算法分析

代码


前言

本文重点内容是记录攻防世界上某一CTF比赛真题的解题过程和代码

需要积累的点在于汇编语言定义的小端存储的32位整数数组的识别,以及转换为Python数组的方法

题目描述

题目附件中只有一个未知文件类型的文件,如下图

Writeup

关键代码定位

为了知道文件类型,先放在Linux下,用file命令查看

可以看到是一个32位的ELF可执行文件

下面先尝试执行,看看能不能获取一些可用于定位的提示信息

没有让输入,直接输出了一行字,无论怎样这可以作为定位信息来用

用IDA反汇编

到这里我会选择先用Shift+F12搜索字符串,在其中寻找我们已经得到的定位信息,进而定位到程序的关键代码(有些程序结构非常复杂,但是很多函数都是不需要看的,这样做的效率很高)

在其中发现了刚刚输出的提示信息"Access denied",双击查看出处

鼠标选中变量名aAccessDenied,按 X 键查看交叉引用

双击那一行,再按F5键反编译,就定位到了关键代码

接下来就进入具体的算法分析过程

算法分析

这个题目较为简单,我们只需要分析清楚sub_8048414和sub_8048538两个函数就好

sub_8048414

进来发现是一个根据a2的值进行的switch-case分支,而在main中调用的时候a2传的值是0,我们顺着来看

当a2为0时,进入第一个分支,由于这个函数的返回值需要是1,main中才能输出"Access granted",因此a1(a1[0])的值只能等于105,接着往下看

发现又递归调用了这个函数,不同点在于a1地址向后移动了一位,传入的a2值也变了

分析到这里不难发现,我们可以通过a2的值不断得到a1(最开始的)对应位置上的值(a1[0],a1[1]...),直到a2的值进入switch-case的default分支,函数结束,返回main

最终得到a1的值列表为[105,115,101,110,103,97,114,100]

sub_8048538

进入这个函数发现是一个简单的异或操作,异或的结果作为字符输出,不出意外的话这就是我们要找的flag

这里的a1就是上个函数最后得到的a1列表,而v2是复制unk_8048760得来,因此需要知道unk_8048760的值

这里有个很重要的点:

v2是DWORD类型的数组,也就是说其中的每一个元素都是4个字节,再结合unk_8048760可得出存储的是32位整数(4字节),千万不能认为v2是类似于[0x0F,0x00,0x00,0x00]这样的字节数组

而因为正常情况下都是小端序存储,因此看到的0Fh,0,0,0其实转换成32位整数就是0x0000000F,即十进制的15

接下来就可以写代码解出flag了

代码

python 复制代码
a1=[105,115,101,110,103,97,114,100]
v2 = [
    15, 31, 4, 9, 28, 18, 66, 9, 12,
    68, 13, 7, 9, 6, 45, 55, 89, 30,
    0, 89, 15, 8, 28, 35, 54, 7, 85,
    2, 12, 8, 65, 10, 20
]
for i in range(33):
    print(chr(v2[i]^a1[i%8]),end="")

很简单的异或操作,最后结果别忘了用chr转为字符输出

最终flag为 flag{s0me7hing_S0me7hinG_t0lki3n}

相关推荐
一名优秀的码农4 分钟前
vulhub系列-12-Hackademic.RTB1(超详细)
安全·web安全·网络安全·网络攻击模型·安全威胁分析
m0_7381207211 分钟前
sqli-labs过关解析(17- 20附带源码解析)
数据库·sql·web安全·php·ctf·安全性测试
Codefengfeng2 小时前
kali安装与使用蚁剑(antsword)
web安全·网络安全·系统安全
The_Uniform_C@t23 小时前
AWD | ATT&CK实战系列--蓝队防御(一)
网络·学习·网络安全
撩妹小狗5 小时前
渗透测试-信息收集篇-上-手动收集
web安全·网络安全
Boxsc_midnight5 小时前
【windows电脑浏览器直接访问虚拟机或云端openclaw的方法】一个不需要HTTPS的安全连接通道(基于SSH)
windows·安全·https·openclaw
安全二次方security²6 小时前
【CVE-2025-0647】ARM CPU漏洞安全通告
arm开发·安全·cve-2025-0647·tlbi·cpp rctx 指令·c1-ultra·虚拟化漏洞
Whoami!6 小时前
⓬⁄₇ ⟦ OSCP ⬖ 研记 ⟧ Linux权限提升 ➱ 利用Cron任务配置不当实现提权
网络安全·信息安全·linux提权·cron任务
●VON6 小时前
HarmonyOS应用开发实战(基础篇)Day11 -《组件复用》
学习·安全·华为·harmonyos·von
德迅云安全-小潘18 小时前
德迅零域(微隔离):破解云时代横向渗透困局的“手术刀”
网络·数据库·安全