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}

posted @ 2024-07-15 18:41  yee-l  阅读(25)  评论(1)    收藏  举报