山东网站建设运营煤棚球形网架公司
web/
2025/10/3 13:39:33/
文章来源:
山东网站建设运营,煤棚球形网架公司,新手做站必看 手把手教你做网站,重庆网红打卡地方有哪些景点大家千万不要着急#xff0c;不要慌张#xff0c;即使自己并不了解多少汇编代码的知识#xff0c;即使自己计基课上的基础知识学的并不扎实#xff0c;也都不要紧#xff0c;因为这次计基实验考察的重点并不是基础知识#xff0c;而是对gdb工具的掌握#xff0c;以及心细…大家千万不要着急不要慌张即使自己并不了解多少汇编代码的知识即使自己计基课上的基础知识学的并不扎实也都不要紧因为这次计基实验考察的重点并不是基础知识而是对gdb工具的掌握以及心细的程度所以不要害怕你只管往前走走到地方了你就知道该怎么做了。
既然我们已经破解了phase_1和phase_2那么我们不妨将断点打在phase_3上。然后使用命令r执行bomb可执行文件接着输入已破译的phase_1和phase_2答案字符串接着随便输入111作为答案字符串然后一路ni直到 图1通过%d %d我们似乎了解到了什么 所示。既然在phase_2中我们已经知道了__isoc99_sscanfplt这个函数会将(%esp)的字符串按照(%esp4)的格式进行读取也就是将111按照%d %d进行读取那么我们不妨退出gdb重新随便输入8 9作为phase_3的答案字符串然后一路ni到当前这个位置如 图2退出gdb重新随便输入8 9作为phase_3的答案字符串然后一路ni到当前这个位置 所示 图1通过%d %d我们似乎了解到了什么 图2退出gdb重新随便输入8 9作为phase_3的答案字符串然后一路ni到当前这个位置 既然我们随便输入的phase_3的答案字符串是8 9能够顺利按照%d %d的形式进行读取那么我们可以大胆的ni一直到 图3判断第一个整数 所示。我们发现如果(%esp4)的值大于7也就是我们输入的第一个整数的值大于7那么程序就会跳到第phase_3224行可是第phase_3224行就是引爆炸弹所以我们不能那样子做所以我们输入的第一个整数应该小于等于7。因此重新输入phase_3的答案字符串为7 8然后重新启动gdb一路ni到现在的位置如 图4重新输入phase_3的答案字符串为7 8然后重新启动gdb一路ni到现在的位置 所示。 图3判断第一个整数 图4重新输入phase_3的答案字符串为7 8然后重新启动gdb一路ni到现在的位置 接着继续ni下去直到 图5第二次判断第一个整数 所示。第一个整数的值同时还应该小于5所以我们重新输入phase_3的答案字符串为4 8然后重新启动gdb一路ni到现在的位置如 图6重新输入phase_3的答案字符串为4 8然后重新启动gdb一路ni到现在的位置 所示。 图5第二次判断第一个整数 图6重新输入phase_3的答案字符串为4 8然后重新启动gdb一路ni到现在的位置 接着继续ni直到 图7 判断第二个整数 所示。 图7 判断第二个整数 在这里我们必须要跳到第phase_3157行去否则程序顺序执行的话就会执行到第phase_3152行就会引爆炸弹。那么该如何跳到第phase_3157行去呢应该让(%esp8)的值与%eax的值相等而(%esp8)的值为8也就是我们输入的第二个整数%eax的值为0所以我们不妨重新输入4 0作为phase_3的答案字符串然后一路ni到当前位置如 图8重新输入4 0作为phase_3的答案字符串然后一路ni到当前位置 所示。 图8重新输入4 0作为phase_3的答案字符串然后一路ni到当前位置 接着继续ni下去当出现如 图9成功攻破phase_3 所示的界面时就证明我们成功找到了phase_3的答案字符串啦到现在为止我们找出的答案字符串为 I turned the moon into something I call a Death Star. 0 1 1 2 3 5 4 0 图9成功攻破phase_3 接着phase_4我们将断点打在phase_4上然后随便输入111作为答案字符串观察此时的gdb如 图10开始攻破phase_4 所示。 图10开始攻破phase_4 接着一路ni下去直到如 图11仍然让我们输入两个整数 所示的情况出现我们仿照着前面的做法重新输入4 0作为phase_4的答案字符串然后再ni到当前位置如 图12照着前面的做法重新输入4 0作为phase_4的答案字符串然后再ni到当前位置 所示。 图11仍然让我们输入两个整数 图12照着前面的做法重新输入4 0作为phase_4的答案字符串然后再ni到当前位置 接着一路ni下去直到如 图13当第一个整数小于等于14时不会引爆炸弹 所示的情况出现时停下来分析。在这里其实隐藏了第phase_472行而这一行就是引爆炸弹意思是我们输入的第一个整数必须小于等于14否则就会引爆炸弹。但是考虑到我们输入的第一个整数是4因为不会在这里便立刻就引爆炸弹所以我们可以继续ni下去直到 图14调用func4函数 func4函数是干什么用的呢我们也没有心思去研究func4的功能所以反复尝试第一个整数尝试1、2、3、4、5、6、8、9、10、11、12、13、14发现仅当第一个整数为13时才能通过接着第二个整数为31时才能通过。最终成功拆弹如 图15成功拆除phase_4 所示。而我们的phase_4的答案字符串即为13 31。 图13当第一个整数小于等于14时不会引爆炸弹 图14调用func4函数 图15成功拆除phase_4 至此我们获得的所有答案为 I turned the moon into something I call a Death Star. 0 1 1 2 3 5 4 0 13 31 接着phase_5。我们自己尝试过几次之后得到了如下的思路phase_5的要求是什么呢phase_5要求我们输入六个字符比如我们输入的是abcdef”因为a的ASCII码值的16进制表示为0x61接着让0x610x0F接着将这个结果乘以4加到0x565581e0之上也就是0x565581e00x40x565581e4然后在内存中找到地址为0x565581e4的内容将这个内容加到sum上而0x565581e4的内容为0x0000000a所以sum0xa接着第二个字符是b因为b的ASCII码值的16进制表示为0x62接着让0x620x0F接着将这个结果乘以4加到0x565581e0之上也就是0x565581e00x80x565581e8然后在内存中找到地址为0x565581e8的内容将这个内容加到sum上而0x565581e8的内容为0x00000006所以sum0xa0x60x10... ...重复处理cdef得到了sum的值。而最终能够成功拆弹的要求是sum的值应该为41D那么如何才能得到41D呢可以888881而哪个内存地址中的内容为8哪个内存地址中的内容又为1呢如 图16不同内存地址中的数 所示。发现0x56558214中为80x565581ec中为1而0x56558214-0x565581e00x340x34/0x40xD而m的ASCII值就是0x6D所以前5个字符可以选择为m而0x565581ec-0x565581e00xc0xc/0x40x3而c的ASCII值就是0x63所以最后1个字符可以选择为c。因此针对phase_5我们可以构造字符串mmmmmc。 pwndbg x 0x565581e0 0x565581e0 array.3068: 0x00000002 pwndbg x 0x565581e4 0x565581e4 array.30684: 0x0000000a pwndbg x 0x565581e8 0x565581e8 array.30688: 0x00000006 pwndbg x 0x565581ec 0x565581ec array.306812: 0x00000001 pwndbg x 0x565581f0 0x565581f0 array.306816: 0x0000000c pwndbg x 0x565581f4 0x565581f4 array.306820: 0x00000010 pwndbg x 0x565581f8 0x565581f8 array.306824: 0x00000009 pwndbg x 0x565581fc 0x565581fc array.306828: 0x00000003 pwndbg x 0x56558200 0x56558200 array.306832: 0x00000004 pwndbg x 0x56558204 0x56558204 array.306836: 0x00000007 pwndbg x 0x56558208 0x56558208 array.306840: 0x0000000e pwndbg x 0x5655820c 0x5655820c array.306844: 0x00000005 pwndbg x 0x56558210 0x56558210 array.306848: 0x0000000b pwndbg x 0x56558214 0x56558214 array.306852: 0x00000008 pwndbg x 0x56558218 0x56558218 array.306856: 0x0000000f pwndbg x 0x5655821c 0x5655821c array.306860: 0x0000000d 图16不同内存地址中的数 至此我们得到的答案为 I turned the moon into something I call a Death Star. 0 1 1 2 3 5 4 0 13 31 mmmmmc
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/86242.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!