正常解法

通过查看字符串发现有个类似迷宫(蜂巢)地图的区域,猜测得先逆向得出地图字符串如何使用

image-20201010153149078

然后再分析CheckFlag函数中用户输入R或者L之后蜂巢的走向

image-20201010153415848

最后得出一段由R和L组成的Flag

我的解法

我发现在CheckFlag函数中验证Flag不是非常严谨,每一位Flag之间没有很深的关联,并且是按位校验的,只要当前校验位不正确程序就会打印错误提示。由此我们可以在判断用户输入处下断点,进行人工爆破,例如当前输入R程序提示错误则当前位应该为L。

image-20201010154143969.png

通过前面输入处可知,Flag一共是25位而且只有每位只有两种可能性,所以人工爆破用不了多少时间

QQ截图20201010154501

通过十多分钟的尝试,爆破出了结果,最后md5一下就可以交了

image-20201010154631830

总结

我这种解法是投机取巧的,看看其他师傅的文章。
更优雅的爆破