《Linux及安全》实践3.2

Login程序破解

1、掌握基本的汇编指令机器码

  • nop=空指令( 机器码90)
  • JNE = 若是不相等就跳起色器码75)
  • JE = 若是相等就跳起色器码74)
  • JMP = 无条件跳起色器码EB)
  • CMP = 比较

2、进行破解操做

1.用winscp将login文件传送到Ubuntu中

2.修改文件权限为可执行文件

- ![](http://images2015.cnblogs.com/blog/744595/201605/744595-20160531141059539-907775874.png)

3.能够看到在上面的步骤中,login执行以后是“drop dead”的

4.查看反汇编代码

    • 能够看到在上图中标为黄色的部分是一个比较语句(jne), jne表示当比较不相等时,跳转。
    • 而0x75 0e表示jne指令的跳转量为0x0e,从0x8048456跳转到0x8048464一行(即imp一行)。也就是说,当输入与已存口令不相等时,就不会执行函数调用(call)。
    • 那么,若是要破解程序使得不管输入的口令是不是正确的,均可以实现函数调用,就须要将这条jne指令修改一下,使得其跳转到0x8048458行的movl处,从而顺利执行call语句。
    • 因此,咱们须要将0x750e修改成0x7500ubuntu

      5. 程序破解

  1. vi打开login,输入“:%!xxd”(中间无空格)
  2. 输入:/750e查找到那个位置,比对四周,肯定位置后将其修改成7500
  3. 输入“:%!xxd -r”保存
  4. 输入“:wq”保存
  5. 运行,输入和上次一样的password(lwr),显示正常功能
相关文章
相关标签/搜索