buu Youngter-drive

查壳,有壳,upx脱壳(upx.exe -d )

image-20240715094111766

进ida看主函数

image-20240715161108375

又是这种粉色的没见过的函数,速查

CreateMutexW可以创建或打开命名的或未命名的互斥体对象。

简单来说就是后面的多线程同时只会同时运行一个线程

CreateThread就是创建线程来运行

CloseHandle就是关闭线程

在这道题中就是StartAddress和sub_41119F两个函数交替进行

首先就是这个sub_4110FF,进去之后是下图,主要是读取输入的36个字符

image-20240715175320462

然后就是StartAddress,倒数第三层是这个函数,可以看到一个循环,每次418008都会自减,这个值是1D,即29。

image-20240715175305375

image-20240715171349081

最后一层函数,传进去a1就是source的首地址,a2就是29

看函数内容就是大写字母一个操作,小写字母一个操作,把source字符串中的字符进行操作后的字符当作索引,在418000字符中找到位置并返回给source。

image-20240715171511130

然后就是另一个线程,可以看到就是单纯的递减,没有操作

image-20240715180236694

所以总结就是单数操作,双数不变

最后有个检验函数

image-20240715183956068

image-20240715184028913

写个EXP

text1 = 'TOiZiZtOrYaToUwPnToBsOaOapsyS'
text2 = 'QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm'
flag = ''
for i in range(len(text1)):
if i % 2 == 0:
flag += text1[i]
else:
if text1[i].islower():
flag += chr(text2.find(text1[i]) + 38)
else:
flag += chr(text2.find(text1[i]) + 96)
print(flag)

得到结果ThisisthreadofwindowshahaIsES

网上看到这题flag后面还要加个E,不懂为什么,没看到为什么是30位

flag{ThisisthreadofwindowshahaIsESE}

本文作者:yee-l

本文链接:https://www.cnblogs.com/yee-l/p/18303749

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   yee-l  阅读(8)  评论(1编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起