exe逆向,首先查壳,发现有upx壳,upx -d脱壳,拖进ida
找到主函数
BUUCTF Youngter-drive
这里可以看到创建了两个线程,先沿着StartAddress,
BUUCTF Youngter-drive
一直找到sub_411940,这里有一个问题,当使用f5是,会显示
BUUCTF Youngter-drive
这是由于堆栈不平衡导致的,看汇编部分
BUUCTF Youngter-drive
这里要将 -04改为00
BUUCTF Youngter-drive
改完后
BUUCTF Youngter-drive
之后再次f5
BUUCTF Youngter-drive
找到了加密函数,这是将字符串进行了替换,当字符是大写字母时,替换为off_418000处-38,小写则替换后-96
这时回过头来看第二个线程
BUUCTF Youngter-drive
这个函数使对字符串的加密是隔一个字加密,也就是在奇数位时加密,偶数位时不变,

看一下数据
BUUCTF Youngter-drive
写解密脚本

 
off_418000 = "QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm"

off_418004 = "TOiZiZtOrYaToUwPnToBsOaOapsyS"

flag=''

for i in range(len(off_418004)):
    if i %2 == 0:
        flag += off_418004[i]
        continue
    for j,k in enumerate(off_418000):
        if off_418004[i] == k:
            if chr(j+38).isupper():
                flag += chr(j+38)
            else:
                flag += chr(j+96)

print flag

得到flag,但最后
BUUCTF Youngter-drive
在比对时只比对了29位,所以得出的flag少了一位,所以需要再加一位提交。

相关文章:

  • 2021-08-16
  • 2022-12-23
  • 2021-12-18
  • 2021-12-18
  • 2021-08-18
  • 2021-08-23
  • 2021-07-07
  • 2021-03-30
猜你喜欢
  • 2021-12-03
  • 2021-09-30
  • 2022-12-23
  • 2021-07-02
  • 2022-12-23
  • 2021-11-25
  • 2021-06-11
相关资源
相似解决方案