《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),顯示正常功能
相關文章
相關標籤/搜索