linux实践——简单程序破解

一、运行login可执行程序,屏幕显示需要输入密码,随便输入一串字符,结果是Drop dead!

810675-20160530235041446-1416747193.png

二、objdump -d login,对login进行反汇编,找到main函数,找到含有scanf的那一行,再看接下来几行,发现有cmp指令进行比较,比较的寄存器是1c和18,找到main函数开始几行,发现1c被赋值7fe,转换成十进制后是2046。再次执行login,输入2046,结果是on your command,my master!破解成功。

810675-20160530235153914-1063796176.png

810675-20160530235205039-1951658975.png

810675-20160530235215789-1708700211.png

810675-20160530235250602-901402220.png

三、修改代码,改变程序功能。

vi login

810675-20160530235304602-1633717150.png

:%!xxd

810675-20160530235319899-572290070.png

/750e

810675-20160530235343242-167885518.png

进入insert模式修改十六进制数

:%!xxd -r

810675-20160530235400836-1876233937.png

:wq

810675-20160530235414680-1837529536.png

/login

1.如下图所示,程序进行比较后,不相等时跳转到输入错误的处理语句。找到即将修改的750e字段,将表示jne的75修改为74(表示je,即相等时跳转)或90(nop无效指令),可以将程序修改成输入正确密码时,输出Drop dead!输入错误密码时输出on your command,my master!

810675-20160530235512805-1828526015.png

810675-20160530235716430-618468947.png

810675-20160530235523555-320402491.png

810675-20160530235532133-493361972.png

810675-20160530235544836-1286101067.png

2.如下图所示,修改cmp指令的对象,使得比较结果永远相等。不管输入什么,结果都是on your command,my master!

810675-20160530235755102-1301614193.png

810675-20160530235803649-85173095.png

3.如下图所示,将含有scanf字符的那一行指令的十六进制数都改为无效指令。结果为直接输出Drop dead!然后再如1、2修改一下,就可以直接输出on your command,my master!

810675-20160530235851836-660726491.png

810675-20160530235902071-57991500.png

4.本项修改时尝试修改!将1c和18存储的数值改成一样的。执行login,结果是不管输入什么,结果都是on your command,my master!(不知道是为何如此,按理来说18存储的是输入的密码的值,应该没有变化的……)

810675-20160530235933211-61184813.png

810675-20160530235944836-2031179719.png

810675-20160530235957649-2134065469.png

5.程序还有很多其他的改法,在此就不一一列举的。欢迎讨论交流~

6.以上

转载于:https://www.cnblogs.com/whyfarrell/p/5544449.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值