20155234 昝昕明 《網絡對抗技術》實驗一 PC平臺逆向破解

實踐內容:

  • 手工修改可執行文件,改變程序執行流程,直接跳轉到getShell函數。
  • 利用foo函數的Bof漏洞,構造一個攻擊輸入字符串,覆蓋返回地址,觸發getShell函數。
  • 注入一個本身製做的shellcode並運行這段shellcodelinux

    實踐所涉及指令

    彙編中的指令:
    call:使程序跳轉到某個地址並開始執行,被調用的過程位於當前代碼段內。它的機器指令是一個16位的有符號數,也就是說被調用的過程的首地址必須位於距離當前call指令-32768~+32767字節的地方。在指令執行的時候,處理器先把IP的值壓棧,而後根據操做數調整IP的值(IP=IP+操做數+3),這直接致使處理器的執行流轉移到目標位置處。
    ret:近返回指令。執行的時候,處理器從棧中彈出一個字到IP中。
    NOP:NOP指令即「空指令」。執行到NOP指令時,CPU什麼也不作,僅僅當作一個指令執行過去並繼續執行NOP後面的一條指令。(機器碼:90)
    JNE:條件轉移指令,若是不相等則跳轉。(機器碼:75)
    JE:條件轉移指令,若是相等則跳轉。(機器碼:74)
    JMP:無條件轉移指令。段內直接短轉Jmp
    CMP:比較指令,功能至關於減法指令,只是對操做數之間運算比較,不保存結果。cmp指令執行後,將對標誌寄存器產生影響。其餘相關指令經過識別這些被影響的標誌寄存器位來得知比較結果。
    gdb中的指令:
    attach:直接在gdb中把一個正在運行的進程鏈接到gdb中,以便於進行動態調試;
    disassemble:命令用於反彙編,它可被用來查看當前執行時的源代碼的機器碼,其實際上只是把目前內存中的指令dump出來。
    linux中的指令:
    ps:用來查看進程
    grep:是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹配的行打印出來。
    prel: Perl是一門解釋型語言,不須要預編譯,能夠在命令行上直接使用正則表達式

    實踐一:直接修改程序機器指令,改變程序執行流程

    用objdump -d命令反彙編。


    用vim修改文件將d7改成c3後運行
    shell

    實踐二:經過構造輸入參數,形成BOF攻擊,改變程序執行流


    實踐三:注入Shellcode並執行



    實驗收穫與感想

    此次實驗整體來講比較簡單,跟着老師的實驗指導和組長的實驗博客很順利地就作完了。這是第一次接觸攻防一類的實驗,成功作完以後仍是頗有成就感的。vim

    什麼是漏洞?漏洞有什麼危害?

  • 什麼是漏洞
    我認爲漏洞就是安全缺陷,設計人員在設計時故意留下或者由於疏忽留下的弱點。
  • 漏洞有什麼危害
    這些安全缺陷會被技術高低不等的入侵者所利用,從而達到控制目標主機或形成一些更具破壞性的目的。sass

相關文章
相關標籤/搜索