思路:
使用exeinfo查壳
是一个无壳32位的程序
直接上ida
直接看main函数
将用户的输入保存到buffer[]
使用sub_401260
函数处理buffer[]
Str1
指向处理之后sub_401260
的返回值
最后比较Str1
和Str2
的值
跟进sub_401260
函数查看
瞅一眼代码 发现很眼熟 看着像base64
继续往下看
看到了byte_413000
双击进去查看
发现了对base64的编码表进行了修改
到这里题目的逻辑已经很清晰了
直接写脚本跑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()