拿到题先运行 然后 根据字符串找到 程序的主函数。
程序是输入后进行了一个 check。
发现 check 函数里面 用到了 c++ 的虚表函数。为了找到对应的 函数。我们必须进行动调。
直接 ida 动态调试,发现程序直接关掉了。说明程序存在 反调试。
查看 main 函数的交叉引用。 在上一个函数 下断点看看是哪儿 判断跳出了 程序。
直接把 text 段的 跳转改为jnz 从来实现能够跳转。
然后开始 下断点开始调试。
分析,发现是一个 正则匹配。 异或字符串得到 flag 的输入格式。
str1 = "Ncg`esdvLkLgk$mL=Lgk$mL=Lgk$mL=Lgk$mL=Lgk$mLm"
str2 = ""
for i in range(len(str1)):
str2 += chr(ord(str1[i])^0x10)
print str2
swpuctf\\{\\w{4}\\-\\w{4}\\-\\w{4}\\-\\w{4}\\-\\w{4}\\}
swpuctf{1234-1234-1234-1234-1234}