题目要求
通过ssh远程连接靶机,账号test,密码123,尝试使用GDB调试进行变量的赋值,Just run it!
探索gdb工具
了解了基本语言,比如运行exe文件、设断点、输出某一变量值等等。
解题步骤
1.查看靶机目录,运行一下看看。
看到输出后,猜想这个输出不是0便不行。那么0到底是简单指一个变量的值?还是执行某个循环的次数?或者有更复杂的运算?
2.用gdb工具运行文件
3.尝试输入参数?貌似输出与输入参数无关。
4.由于完全不知道这个文件的源代码,先设个断电看看,设在第一行。
5.经过几次尝试后,终于看出了规律:
第一个函数的返回值就是最终的“your number”。 (试了半个小时才发现)
6.那么如何知道存第一个函数返回值的变量是哪一个呢?
在另一个博客中学到了一个命令 能看到汇编指令。 http://t.csdn.cn/LErCk
那么我只要在第一个函数执行完毕后输入这个命令,再依次查看变量的值,如果有与第一个函数返回值相等的,那么便找到了这个变量。
7.重新运行文件,并在第一个函数结束即输入finish命令后,输入disas /s main命令。
可以看到本次返回值“your number”是3.
有这么多的变量,我们倒着往前查。
8.依次查看变量寄存器的值,看有没有等于3的。
这个eax对应寄存器的值就是3,我们直接试一试,反正不要钱。
9.更改eax寄存器的值为0,继续运行文件。
运气太好啦!被我蒙对了!得到flag。
解题步骤简化版
1.将run文件加载到gdb程序中
命令: file run
2.修改eax的寄存器值为0
命令:set $eax=0
3.运行run文件,获得flag。
命令:r
成功了的话,记得给我点赞哦~