攻防世界happyCTF-writeup

一.默认已装好IDA,exeinfope,winrar/7-zip

二.开始愉快解题吧:目标找到flag

(1)下载题,解压

(2)将拖入exeinfope中

(3)为32exe文件,在windows环境下运行(双击输入会闪退,所以在cmd窗口操作)

随便输入,发现关键字符串not enough;说明我们输入的flag长度太短

(4)将文件拖入IDAPro(x64/32)中,按键盘上f5键(有的电脑同时按住f5与fn键)得到对应c语言伪代码。

向上分析

这些sub函数几乎都与this指针有关系又有非常多嵌套,但双击this无数据显示,不好静态分析

故动态调试看是否有发现

1.f2在那行设置断点,因为是程序开始的地方,f8单步过流程,看看程序是如何运行的

2.选择动态调试器local windows debugger

3.按三角符号启动,一路确定

4.随便输长24的字符串,回车

5.一直f8到这一步,发现无法继续,看看对话框

随便输入长24的字符串,回车,又可继续f8

发现程序一定跳到loc_40686B代码段,继续f8

跳到loc_4068AA代码段,再跳到右分支,循环24次,再跳到loc_4068C9代码段,继续f8

再跳到loc_40695C,出现分叉

右分叉的goodjob为我们想要的

总体流程如上,再用其他长24的字符串也是一样的流程

找到固定流程的每个代码段f5反汇编可得对应伪代码

即输入24位flag---->

循环24次---->与rxusoCqxw{yqK`{KZqag{r`i这24位的字符串比较,看每一位是不是一样

故重点在sub_403B70对flag的操作

进入sub_403B70函数

char a2暗示了a2=flag,故逆向脚本如下:

得到flag{Welcome_to_Neusoft}

flag=''
a='rxusoCqxw{yqK`{KZqag{r`i'
for i in range(24):
        flag+=chr(ord(a[i])^0x14)
print(flag)

如有错误,请大家不吝赐教

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

crow\a

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值