20145319 《信息安全系統設計基礎》期中總結

20145319 《信息安全系統設計基礎》期中總結

一 期中內容總結

linux 命令複習

  • man -k
    • 根據關鍵字搜索聯機幫助,是一種模糊搜索
    • 結果後的數字表明該解釋是對應相應區段的內容,且總共有八個不一樣區段分類
    • 1,使用者在shell中能夠操做的指令或可執行檔
    • 2,系統核心可呼叫的函數與工具等
    • 3,庫函數,大部分是C的函數庫(libc)
    • 4,裝置檔案的說明,一般在/dev下的檔案
    • 5,設定檔或者是某些檔案的格式
    • 6,遊戲,屏保
    • 7,雜項
    • 8,系統管理員可用的管理指令
    • 也能夠直接搜尋相應分類的命令解釋,例如man 3 printf
  • cheat:
    • cheat xxx給出命令xxx的簡短解釋,而且列出xxx的相關使用範例給用戶參考
  • grep:
    • 是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹配的行打印出來
    • grep -nr xxx /usr/include查找xxx的值,例如查找宏 STDOUT_FILENO 的值的命令是grep -nr STDOUT_FILENO /usr/include
  • vi
    • 分爲三種狀態,分別是通常模式、編輯模式和命令行模式
    • 通常模式:進入文件後即爲通常模式,你可使用h,j,k,l(也可使用方向鍵)按鍵來移動光標,你可使用刪除字符或刪除整行來處理文件內容, 也可使用複製、粘貼來處理你的文件數據
    • 編輯模式:按下i, I, o, O, a, A, r, R會進入相應編輯模式,此時才能夠進行編輯。按下Esc便可退出編輯模式
    • 命令行模式:輸入: / ?進入命令行模式,完成退出,保存等操做
    • 同時編輯兩個文件;vim 1.c 2.c
  • gcc
    • 編譯:gcc hello.c -o hello
    • 詳細的來講上述編譯過程是分爲四個階段進行的,即預處理(也稱預編譯,Preprocessing)、編譯(Compilation)、彙編 (Assembly)和鏈接(Linking),(生成文件後綴分別是iso)。java

    • 預處理:gcc –E helloworld.c –o helloworld.ilinux

    • 編譯:gcc –S helloworld.i –o helloworld.s正則表達式

    • 彙編:gcc –c helloworld.s –o helloworld.oshell

    • 連接:gcc helloworld.o –o helloworldvim

    • 多模塊編譯:例如gcc hello1.c hello2.c -o hello數組

    • 檢錯:gcc -Werror hello.c -o hello
  • gdb
    • l:查看文件安全

    • b:設置斷點函數

      • 函數斷點:b main:在main函數下設置斷點工具

      • 行斷點:b num:在第num行下設置斷點性能

      • 臨時斷點:tb num:在第num行下設置臨時斷點(斷點使用一次以後消失)

      • 條件斷點:b num if i=8:

    • r:run,運行函數,r num從第num行開始運行

    • p:print,輸出查看變量值,p i輸出i的值

    • n & s:next & step,單步執行,s會進入函數,n將會一步執行完函數

其餘內容總結

  • 計算機中有符號數,無符號數,浮點數的編碼表示
  • 棧幀結構
    • 在調用子程序時,彙編中會有callret兩條指令,在實際計算機運行中即在call以後將返回地址壓入棧中,並跳轉到調用程序的起始地址,ret即彈出地址,程序回到本來進程
    • 而針對計算機這一特性,且c語言中對數組可以使用長度並無限制,能夠經過往程序的緩衝區寫超出其長度的內容,形成緩衝區的溢出,從而破壞程序的堆棧,執行攻擊代碼達到取得系統權限等目的,這就是緩衝區溢出漏洞攻擊
  • 程序想要運行的越快就要從其局部性入手,要引用臨近於其餘最近引用過的數據項的數據項,或者最近引用過的數據項自己
    • 重複引用同一個變量的程序有良好的時間局部性
    • 對於具備步長爲k的引用模式的程序,步長越小,空間局部性越好
    • 對於取指令來講,循環有好的時間和空間局部性。循環體越小,循環迭代次數越多,局部性越好

二 自身總結

  • 收穫
    • 學習了代碼編譯過程,以及計算機的存儲結構,程序的棧幀結構,局部性等,起先對於計算機構成、工做以及程序運行都只有一個模糊的概念,知其然不知其因此然。如今就有了一個初步的印象,以前學習c語言所要求的「高內聚,低耦合」如今看來其實就是一種局部性的體驗,在寫代碼的時候也大概有了改進程序運行速度,性能的方向
    • 在仔細看了課上說的緩衝區溢出漏洞攻擊,之前strcpy函數還用的挺多的,也壓根沒想過其中的一個細節上的疏忽可能會致使系統權限被他人修改這種結果,感受在學計算機這種行業上,漏洞的存在仍是很致命的,之後感受在對於這種細節的問題上仍是要多琢磨一下,說不定能夠有意想不到的收穫
  • 不足
    • 這門課比起上一學期的java程序語言來講,感受如今所作的一直都是理解書上各類概念,而動手實踐的部分就少了不少,代碼敲的很少,可是想要弄懂的話我以爲仍是要多本身在電腦上經過代碼實踐,這樣理解的很更透徹,印象我以爲也會更深入一點,不大會容易忘
  • 建議
    • 但願老師在講課的時候可以給咱們介紹,或者讓有準備的同窗給咱們展現,或者講解一些相似於緩衝區溢出漏洞攻擊的實驗,以爲這種類型的實驗頗有意思,真正動手作完以後感受也能學到不少東西

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 0/0 1/1 20/20 學習經常使用linux命令
第二週 100/100 1/2 20/40 學習vim,gdb等用法
第三週 100/200 1/3 15/55
第四周 0/300 0/3 10/65
第五週 100/400 1/4 15/80 重溫了彙編相關知識
第六週 0/400 1/5 15/95 學習了Y86
第七週 100/500 1/6 15/110 學習了存儲器相關知識
第八週 0/500 2/8 20/130 複習
相關文章
相關標籤/搜索