zoukankan      html  css  js  c++  java
  • 《Linux及安全》实践3.2

    Login程序破解

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

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

    二、进行破解操作

    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修改为0x7500

    5. 程序破解

    1. vi打开login,输入“:%!xxd”(中间无空格)

    2. 输入:/750e查找到那个位置,比对四周,确定位置后将其修改为7500

    3. 输入“:%!xxd -r”保存

    4. 输入“:wq”保存

    5. 运行,输入和上次同样的password(lwr),显示正常功能

  • 相关阅读:
    angularjs表格方式显示数据
    AngularJS $http
    指令
    B2C电商平台开发心得(asp.net+bootstrap)
    项目修改有感_主要是以js、Gridview为主
    ASP.NET 导出gridview中的数据到Excel表中,并对指定单元格换行操作
    AtrousConvolution和dilated convolution
    keras中自定义Layer
    Messes in Reading Source Coding of SSD
    SSD
  • 原文地址:https://www.cnblogs.com/lwr-/p/5545702.html
Copyright © 2011-2022 走看看