攻防世界&&BUUCTF逆向练习

这篇博客分享了作者在攻防世界和BUUCTF平台上的逆向分析练习,涉及多线程加密挑战和MIPS架构文件解析。作者通过ida静态分析,解释了加密逻辑,并探讨了线程交替运行的影响。同时,提供了参考资源和解决方案。

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

BUUCTF——Youngter-drive

这是一道多线程的题目,主要理解了一下线程运行的一些问题
首先查壳,有壳,进行脱壳,手动失败了,linux里面upx -d就可以了
发现不能运行,应该需要修复,但这里比较懒,直接ida静态分析
在这里插入图片描述
StartAddress开始无法反编译,因为堆栈不平很,这里修改sp value,option-general-Stack-pointer选项可以显示sp值,这时用alt+k修改411a04地址为00便可以F5
在这里插入图片描述
在这里插入图片描述
比较简单的加密,判断输入字符,不是英文,直接退出,大写就减去38,从给的off表里面寻找值替换,小写就减去96
后面还有一个线程就是直接对dword-418008进行-1,这边就涉及到我的知识盲区了,根据大佬wp,两个线程应该算是交替运行的,第一个运行一下sleep,然后第二个-1导致奇数进行加密,偶数不加密,最后得出对照的结果

不过这是我的个人理解,如果出错了,还望大佬们多多指正

然后代码

def ask(m,tab):
    c=""
    for i in range(len(m)):
       ind=tab.index(m[i])
       if(i % 2!=0):
           if(ind<=26):
                c+=chr(ind+96)
           else:
               c+=chr(ind+38)
       else:
           c+=m[i]
    return c
offs="QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm"
m="TOiZiZtOrYaToUwPnToBsOaOapsyS"
print (ask(m,offs))

最后比较的应该是30个字符串,后面要加一个字符,但不知道为什么大佬说在后面随便加,我试了试别的字符提交都失败了,就大佬加的E成功了,这里还是不清楚。。。。

附上大佬的wp,还有error of " positive sp value has been found"的讲解
https://l1b0.fun/2018/08/18/%E5%AE%89%E6%81%92%E6%9D%AF-7%E6%9C%88%E6%9C%88%E8%B5%9B-Reverse-Youn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值