这是一定要的啦-逢甲大学课件_第1页
这是一定要的啦-逢甲大学课件_第2页
这是一定要的啦-逢甲大学课件_第3页
这是一定要的啦-逢甲大学课件_第4页
这是一定要的啦-逢甲大学课件_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

BufferOverflow原理簡介參考資料:SmashingTheStackForFunAndProfit(ByAlephOne)逢甲大學資工所平行實驗室鍾宜勳BufferOverflow原理簡介參考資料:逢甲大學資1Stack的運作方式(1/9)Stack的運作方式(1/9)2Stack的運作方式(2/9)Stack的運作方式(2/9)3Stack的運作方式(3/9)Stack的運作方式(3/9)4Stack的運作方式(4/9)Stack的運作方式(4/9)5Stack的運作方式(5/9)Stack的運作方式(5/9)6Stack的運作方式(6/9)Stack的運作方式(6/9)7Stack的運作方式(7/9)Stack的運作方式(7/9)8Stack的運作方式(8/9)Stack的運作方式(8/9)9Stack的運作方式(9/9)Stack的運作方式(9/9)10Stack向下成長,Array向上遞增.Stack的成長方向,與Array的成長方向剛好相反.Stack向下成長,Array向上遞增.Stack的成長方向11Array被寫入超過其容量的資料

(BufferOverflow)造成ReturnAddress和SFP被覆寫Array被寫入超過其容量的資料

(BufferOverf12BufferOverflow

造成ReturnAddress不正確可能造成程式Return到隨機的Address去BufferOverflow

造成ReturnAddre13Idea1.利用ReturnAddress

利用BufferOverflow可以更改ReturnAddress的特性,透過巧妙的安排,我們可以執行我們想執行的任何程式區段.甚至我們把code放在Stack中,code也可以順利執行.Idea1.利用ReturnAddress

利用Buf14Idea2.取得Root權限的Shell

那個被我們Overflow的執行檔,如果它的suid是root的話,那麼我們可以在overflow時,產生一個shell出來,而得到一個有root權限的shell.然後我們就可以為所欲為了.Idea2.取得Root權限的Shell

那個被我們Ov15Idea3.由命令列參數引發

BufferOverflow在前面的二個Idea中,我們知道Stack裡也可以執行code,而且這樣的作法有機會可以取得“具有Root權限的Shell”來為所欲為,不過有幾個問題要解決:Stack中要執行的code要從哪來?ReturnAddress要怎麼去更改?要怎麼去bufferoverflow別人的程式?這個答案就是透過命令列參數輸入code以及所想要return的新位址.sh-2.04$./vulnerable$CODEIdea3.由命令列參數引發

B16初步的作法把要輸入Stack的code及returnaddress放到環境變數中,這樣進行bufferoverflow的輸入會方便許多.缺點:我們所需的returnaddress很難求得,必需靠許多次的嘗試才能得到結果.初步的作法把要輸入Stack的code及returnadd17ShellCode欲輸入Stack的code,我們稱之為Shellcode.其結構如下:ShellCode欲輸入Stack的code,我們稱之為S18ShellCode的運作過程(1/6)ShellCode的運作過程(1/6)19ShellCode的運作過程(2/6)ShellCode的運作過程(2/6)20ShellCode的運作過程(3/6)ShellCode的運作過程(3/6)21ShellCode的運作過程(4/6)ShellCode的運作過程(4/6)22ShellCode的運作過程(5/6)ShellCode的運作過程(5/6)23ShellCode的運作過程(6/6)ShellCode的運作過程(6/6)24初步作法

技術細節(1/3)ShellCode的內容必需避免有00H的值.因為有的程式可能會用strcpy()等函式,將命令列參數予以複製並進行處理.這時,ShellCode如果有00H的值,將會被誤以為是字串結尾‘\0’,而使得ShellCode被複製的不完全,而喪失完整性,進而導致Code無法運作.我們也就沒辦法得到Shell了.透過暫存器與自己做xor運算,產生我們所需要的0,並且避免使用highword是0的立即值,使code中能夠不再有00H出現.例:movb$0x0,0x7(%esi)代換成xorl%eax,%eax

初步作法

技術細節(1/3)ShellCode的內容必需避25透過使用環境變數,簡化輸入ShellCode的動作.初步作法

技術細節(2/3)sh-2.04$./vulnerable$CODEshellcode[]= "\xeb\x2a\x5e\x89\x76\x08\xc6\x46\x07\x00\xc7\x46\x0c\x00\x00\x00" "\x00\xb8\x0b\x00\x00\x00\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80" "\xb8\x01\x00\x00\x00\xbb\x00\x00\x00\x00\xcd\x80\xe8\xd1\xff\xff" "\xff\x2f\x62\x69\x6e\x2f\x73\x68\x00\x89\xec\x5d\xc3";輸入容易輸入不便透過使用環境變數,簡化輸入ShellCode的動作.初步作26要BufferOverflow別人的程式,常常會算不準要Return的Address,我們可以在ShellCode前面增加一段nop指令來增加我們的成功機會.初步作法

技術細節(3/3)要BufferOverflow別人的程式,常常會算不準要R27Array太小

無法成功Overflow不時會遇到左圖的情形,導致無法順利地跳到我們的ShellCode執行.所以必需予以改善.Array太小

無法成功Overflow不時會遇到左圖的情形28為了改善Array太小,無法動作的窘況.將ShellCode也移到環境變數中.Stack中只充填新的ReturnAddress.進階作法

技術細節為了改善Array太小,無法動作的窘況.將ShellCod29結論透過BufferOverflow的方式,我們可以不需要擁有root的password,就可以由一般使用者變成superuser,進而掌控整個系統.C語言並沒有bo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论