思路:

使用exeinfo查壳

是一个无壳32位的程序

image-20230409204347007.png
image-20230409204347007.png

直接上ida

直接看main函数

将用户的输入保存到buffer[]

使用sub_401260函数处理buffer[]

Str1指向处理之后sub_401260的返回值

最后比较Str1Str2的值

image-20230410083548517.png
image-20230410083548517.png

跟进sub_401260函数查看

瞅一眼代码 发现很眼熟 看着像base64

继续往下看

image-20230410090133409.png
image-20230410090133409.png

看到了byte_413000 双击进去查看

发现了对base64的编码表进行了修改

image-20230410090457886.png
image-20230410090457886.png

到这里题目的逻辑已经很清晰了

直接写脚本跑flag

exp:

import base64

def main():
    string1 = "ZYXABCDEFGHIJKLMNOPQRSTUVWzyxabcdefghijklmnopqrstuvw0123456789+/"
    string2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
    encode = "x2dtJEOmyjacxDemx2eczT5cVS9fVUGvWTuZWjuexjRqy24rV29q"

    print(base64.b64decode(encode.translate(str.maketrans(string1,string2))))

if __name__ =="__main__":
    main()

flag:

flag{sh00ting_phish_in_a_barrel@flare-on.com}