phase_5
1 题目分析
-
调用string_length的字符串长度函数,测得的长度若不为6则引爆;
-
做一个6次的循环,循环变量%eax从1到6,令%ecx <- (%ebx+%eaxx);
-
只保留%ecx的低四位,并以此作为地址搜索变量,取出0x804a280+4*%ecx中的数加到%edx上,如此循环6次后跳出;
-
比较总和%edx的值是否等于0x45(69),相等则返回进入下一关,不等则引爆。
2 解题思路
首先得知输入的字符串长度为6,然后通过p/x (0x804a280+4%ecx)的指令得到:
上述值分别对应%eax=0-4.因为字符在机器中是以ASCII码的形式存储,因此我们要寻找的一个6位字符串要满足其每个字符的ASCII码位数对应的值相加为0x45即69.
但尝试后发现组合出来的字符都无法通过此题,故需换别的思路