XCTF-Windows_Reverse1

本文档详述了一位逆向工程师在处理XCTF Windows Reverse11挑战时的步骤,包括查壳、ida静态分析及提取字符串。在ida中,发现v4和v6之间的联系,通过遍历数组和ASCII码转换得到关键字符串。在OD动态调试中,通过esp定律定位程序,并找到字符串的索引。最终,通过编写脚本逆向出输入v6以获取正确的flag。文章强调了对不可打印字符的处理,并分享了脱壳失败后的调试方法。
摘要由CSDN通过智能技术生成

1、查壳

查出upx壳,老套路了,本想直接一波esp把壳子脱掉,结果出现内存访问失败的错误,呜呜,爬去upx -d

2、ida静态分析

在这里插入图片描述比较简洁,输入v6,调用函数sub_401000处理v6,最后判断v4的结果,芜湖,看似v4和v6毫无关系,其实细看调用401000函数前的汇编便能找到v4与v6间的联系
在这里插入图片描述
注意到初始时v4和v6在栈内的位置便可以知道,eax中存放的是v6,ecx中存放的是v4,借助寄存器来实现参数传递,ida就分析不出来v4和v6的联系了。
在这里插入图片描述进入401000函数,有些小细节 v4(临时变量),是地址v6和v4的差值 也就是400 ,分析可知:

v1[v4] == *(v1+v4) == *(ebp-804+400) == *(ebp-404)

出现了,也就是这也是在遍历v6数组,可知最后v1*即v4的值为一个字符串[v6的ascii码],所以只需拿到这个byte_402FF8字符串就ok了

3、提取索引字符串

1、提取的两种方式:一种在ida中巧妙分析
在这里插入图片描述
观察到改字符串从偏移量0x2FF80x3018到最后0,计算这两个地址的差值得到32,32我的天,一开是没想到,后来看师傅wp知道,前32的ASCII码对应的字符都是不可打印字符,而v6是我们的输入,所以根本不可能有前32位,而后面的字符串我们知道了,相当于字符串我们都知道了,写脚本就ok。

a='7E 7D 7C 7B 7A 79 78 77 76 75 74 73 72 71 70 6F 6E 6D 6C 6B 6A 69 68 67 66 65 64 63 62 61 60 5F 5E 5D 5C 5B 5A 59 58 57 56 55 54 53 52 51 50 4F 4E 4D 4C 4B 4A 49 48 47 46 45 44 43 42 41 40 3F 3E 3D 3C 3B 3A 39 38 37 36 35 34 33 32 31 30 2F 2E 2D 2C 2B 2A 29 28 27 26 25 24 23 22 21'
a=a.split(' ')
for i in range(len(a)):
    a[i]=int('0x'+a[i],16)
v4='DDCTF{reverseME}'
for i in v4:
    for j in range(len(a)):
        if a[j]==ord(i):
            print(chr(j+32),end='')#加32是因为前面32位虽然不可打印,但也在表中做下标
            break

2、OD动调找字符串,所有字符串都能提出来
虽然脱壳失败,但是我们用esp定律定位真正的程序还是挺简单的。

先单步,在esp数据窗口前四个字节下内存访问断点,之后运行,之后单步步入大跳,进入大跳内可以中文搜索引擎搜索一下,定位主要内容的位置。
在这里插入图片描述在这里插入图片描述通过第一张图的eax=0x31;dl串的地址为eax+0x122FF8,可知首地址为0x122FF8,而0x6D正好为第50个,即下标索引的49,其实eax为啥为0x31呢,因为在前面输入的时候输入123,而1的ASCII正好为49即0x31,这样也能看到是一个索引操作,索引后存到dl中之后dl赋值给ecx,即v4。我们已经知道最后变换过的v4了,而表也知道了,所以可以只需要逆向出v6就ok。

a='00 00 00 00 00 00 00 00 BC 7D 32 6D 43 82 CD 92 FF FF FF FF FF FF FF FF FE FF FF FF 01 00 00 00 7E 7D 7C 7B 7A 79 78 77 76 75 74 73 72 71 70 6F 6E 6D 6C 6B 6A 69 68 67 66 65 64 63 62 61 60 5F 5E 5D 5C 5B 5A 59 58 57 56 55 54 53 52 51 50 4F 4E 4D 4C 4B 4A 49 48 47 46 45 44 43 42 41 40 3F 3E 3D 3C 3B 3A 39 38 37 36 35 34 33 32 31 30 2F 2E 2D 2C 2B 2A 29 28 27 26 25 24 23 22 21 20 00 01 00 00 00 00 1B 08 01 60 26 08 01'
a=a.split(' ')
for i in range(len(a)):
    a[i]=int('0x'+a[i],16)
#print(a)
v4='DDCTF{reverseME}'
v=[]
for i in v4:
    for j in range(len(a)):
         if a[j]==ord(i) and j>32:
             print(chr(j),end='')  #这才是真正的flag

注意,如果是把所有表提出来,如过是在前32位内找到的不能要,因为v6是可打印的,必须ASCII码大于32!!!

对于脱壳后产生的问题,师傅们可以参考下这个师傅的链接:链接: 传送门


完结线:re弟弟的做题笔记,有时可能会带点稀奇古怪的思路,如有问题还望师傅们指正,专栏内容会随着比赛记录而不断更新哦。爬~

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
### 回答1: pure_color xctf是一个CTF比赛平台,致力于举办和推广网络安全竞赛。 pure_color xctf的目标是为安全爱好者和专业人士提供一个学习、切磋和交流的平台。这个平台上举办的比赛覆盖了各种网络安全领域,包括但不限于网络攻防、密码学、逆向工程等。通过参与这些比赛,参赛者可以提升自己的技能,了解最新的安全威胁和攻击技术,锻炼解决问题的能力。 pure_color xctf的比赛模式多样,可以是个人或团队参与。参赛者需要在限定的时间内完成一系列的题目,这些题目可能包含漏洞分析、编程挑战、数据分析等。比赛过程中,参赛者需要运用各种技术手段,如渗透测试、代码审计、漏洞利用等,解决题目的要求。参赛者不仅需要具备网络安全相关的知识,还需要具备良好的团队合作和解决问题的能力。 此外,pure_color xctf也为参赛者提供了一个交流平台。比赛期间,参赛者可以在平台上与其他选手交流经验、讨论解题思路。参赛者也可以通过竞赛结果来评估自己的能力,并与其他选手进行切磋比拼。 总之,pure_color xctf是一个举办网络安全竞赛的平台,旨在为安全爱好者和专业人士提供学习和交流的机会,促进网络安全技术的发展。 ### 回答2: pure_color xctf 是一项竞技性的网络安全挑战赛。XCCTF 是全球知名的网络安全竞赛组织之一,而 pure_color 是该竞赛组织内的一项赛事。该赛事旨在提升参赛者的网络安全技能和知识,让他们在一个仿真的网络环境中进行攻防对抗。 在 pure_color xctf 中,参赛队伍将根据题目要求进行网络攻击和防御。这些题目有不同的难度级别,并涵盖了各种不同的网络安全技术和攻击类型。参赛队伍将需要利用他们的知识和技能,像真实的黑客一样去攻击系统漏洞,获取目标系统内的敏感信息或是直接控制目标系统。同时,他们也需要通过搭建防御策略和系统来保护自己的系统免受攻击。 pure_color xctf 不仅仅是一个交流学习的平台,也是一个展示能力的舞台。优胜的参赛队伍将会被邀请参加更高级别的网络安全竞赛和会议,进一步提升他们的技能并扩展职业网络。此外,pure_color xctf 也为参赛者提供了一个找到职业机会的平台,很多安全公司和组织会在赛事期间招聘优秀的选手。 总而言之,pure_color xctf 是一个有挑战性的网络安全竞赛,旨在通过攻击和防御对抗提升参赛者的技能,并为他们提供职业发展和展示的机会。同时,这个赛事也在促进网络安全领域的交流和合作,为提升整个网络安全行业的水平做出贡献。 ### 回答3: pure_color xctf 是一个CTF(Capture The Flag,夺旗赛)竞赛平台。CTF是一种网络安全竞赛,旨在让参赛者通过解决一系列的密码学、逆向工程、漏洞利用等问题来获取旗标,比赛者可以通过这些旗标来获取积分并竞争排名。 pure_color xctf 平台是一个为CTF竞赛提供的一个在线环境,类似于一个实验室,用于举办CTF比赛。在这个平台上,参赛者可以注册账号并加入已经发布的CTF赛事中。赛事中的题目被分为不同的难度级别,涵盖了各种安全领域的知识。参赛者需要通过解决题目中的任务来获取旗标,并将其提交到平台上进行验证。在比赛结束后,将根据参赛者解决的题目数量、用时、积分等因素来计算最终排名,并颁发奖励给获胜者。 pure_color xctf 提供了逼真的仿真环境,使得参赛者能够在一个安全的网络环境下进行实时的攻防演练。平台上的题目多样化且具有挑战性,旨在让参赛者将所学的理论知识应用到实际场景中去,并培养解决问题和团队合作的能力。同时,pure_color xctf 还为参赛者提供了交流平台,方便他们在比赛过程中与其他参赛者交流经验、技巧以及解题思路。 总之,pure_color xctf 是一个提供CTF竞赛平台的在线环境,旨在鼓励参赛者在安全领域中深入学习和实践,并通过解决各种挑战赛题目来提升技能和知识水平。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值