(未完)Writeup of Take the maze (reverse) in BugKu

来源:互联网 发布:java如何使用log4j 编辑:程序博客网 时间:2024/06/05 11:42

好题(可惜我还没做出来,只做到一半)

简述一下逻辑吧,首先观察程序,main函数调F5伪代码失败,看看函数尾是不是要修改栈指针。果然,修改栈指针后,跳出了F5伪代码。

观察一下main函数的逻辑:

  开头有一个反调试,动调改跳转过了它,接下来进入一个功能不明的函数(猜测为加密函数),然后,动态调试竟然终止了……GG

  然后开始静态分析,在输出‘succeed’语句前的if条件中有一个函数,进入这个函数观察代码逻辑,发现三个步骤:

    首先是5个case,随后是label后的11个case,走后是4个case;

    发现一个可疑字符串‘delru0123456789’,且前五个case对应着数字01234,后11个case对应着56789abcdef,但是这11个case之前有个-53的操作,于是这11个case相当于分成了0,1,2,3,4,5,6,7,8,9,10这11种情况(emmm对16进制数字的操作);

    最后4个case每个case下都各自有一个函数,不难发现这四个函数中都藏有若干数组,分析逻辑后依次异或,得到由‘0’与‘1’组成的26*12的数组(应该就是map),再对4个case后所接的数值进行判断,发现惊喜——‘dlru’(down,left,right,up)

    于是判断第一层case的5个字符(有个指向可疑数组的‘e’,暂时不知道是什么用途)起到了确定方向的作用,而第二层case的11个字符则是代表着步长,从0道10

    成功逆推出走迷宫路径代表的字符串,接下来,就要直面一开始碰到的加密函数了。

 

GG,果然没怼出来。悄悄问了一波学长,学长说硬怼字节码解析什么的太浪费时间(手动滑稽),不如来一发爆破啊(恍然大悟脸)

(复习四级去了,四级考完去爆破)

(未完待·续)

原创粉丝点击