攻防世界 Reverse高手进阶区 3分题 crackme

本文记录了一次攻防世界中关于逆向分析的挑战,涉及使用ida对nsPack壳进行脱壳,并通过逻辑分析解密flag。作者分享了编写脚本的过程,其中关键步骤包括对加密key的处理,最后成功解出42位的flag。虽然文章重点在于逆向工程技术,但也提及了利用ESP定律手动脱壳的技巧。

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

前言

继续ctf的旅程
攻防世界Reverse高手进阶区的3分题
本篇是crackme的writeup

攻防世界的题目分数是动态的
就仅以做题时的分数为准了

解题过程

查壳,显示nsPack壳

在这里插入图片描述

找了个工具脱壳

在这里插入图片描述

扔进IDA

在这里插入图片描述

flag是输入值,进行判断:

  • 长度是42位
  • 有一个while循环

在这里插入图片描述

根据逻辑写脚本:

key1="this_is_not_flag"
key2=[0x12, 4, 8, 0x14, 0x24, 0x5C, 0x4A, 0x3D, 0x56, 0x0A, 0x10, 0x67, 0,
    0x41, 0, 1, 0x46, 0x5A, 0x44, 0x42, 0x6E, 0x0C, 0x44, 0x72, 0x0C, 0x0D,
    0x40, 0x3E, 0x4B, 0x5F, 2, 1, 0x4C, 0x5E, 0x5B, 0x17, 0x6E, 0x0C,
    0x16, 0x68, 0x5B, 0x12, 2, 0x48, 0x0E]
flag=""
for i in range(len(key2)):
	flag+=chr(key2[i]^ord(key1[i%16]))
print(flag)

结语

其实这里取巧了
因为考点在于nspack壳的ESP手动脱壳

可以参考:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值