系统安全实验——GDB调试

题目要求

通过ssh远程连接靶机,账号test,密码123,尝试使用GDB调试进行变量的赋值,Just run it!

探索gdb工具

http://t.csdn.cn/emQnP

了解了基本语言,比如运行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

成功了的话,记得给我点赞哦~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值