Re: [問題] 輸入太多字元會造成程式hang掉。

作者: LPH66 (-6.2598534e+18f)   2016-03-21 23:44:40
※ 引述《ResolaQQ (ResolaQQ)》之銘言:
: : 推 LPH66: 樓上講的攻擊的小範例 https://youtu.be/1S0aBV-Waeo 03/21 18:43
: 不好意思,英聽不太行也沒啥用過 Linux,想請問一下該影片最後做的事,是否是
: 1. 先用 root 帳號把他先前寫的那個有 buffer overflow 的程式改成具有 root 權限
: 2. 開個沒有 root 權限的帳號並使用
: 3. 執行有問題的程式,將修改權限的動作偷偷放進參數列裡
: 由於該程式具有 root 權限,所以也有修改權限的能力
: 就能把目前沒有 root 權限的帳號修改成有 root 權限,之後就可以隨心所欲
: 這樣對嗎?還是有誤解?
他做的示範是這個樣子的:
* 那隻被攻擊的程式是具有 suid 這個特殊權限的程式
這個特性表示他在執行時會暫時把目前的有效使用者 (euid) 設定為該程式的 owner
(euid 表示目前執行這隻程式的使用者是誰;
一些修改系統設定檔中該使用者的資料的程式
如 passwd 就會設定 suid 權限以修改只有 root 能動的系統檔案
當然這種系統程式的 owner 一定是 root, 才不會被其他的使用者亂搞
suid 權限在一些類似狀況下也是有用的, 不一定要是 root
只是這裡這隻被攻擊的小程式的 owner 正好是 root 這樣)
* 他用 perl 填進去的二進位字串是被稱做 shellcode 的"文字"
如他所言, 這些文字一旦被當成機械碼執行就會生出一個 shell 出來
* 現在該程式執行了, euid 設定成了 root
當被填入 shellcode 之後由於 buffer overflow
shellcode 被當成程式執行生出 shell
由於現在的 euid 是 root 所以這個 shell 就是 root 的了
* 所以你所謂的「修改權限」其實是 suid 的動作, 不是 shellcode 的作用
shellcode 只是負責讓這隻被攻擊的程式生出一個 shell 來而已
只是因為 suid 的關係這個 shell 就變成 root 的這樣
====
這則影片所展示的範例跟 shellcode 程式應該都是出自
Hacking: The Art of Exploitation 這本書
https://en.wikipedia.org/wiki/Hacking:_The_Art_of_Exploitation
(手邊正好有一本 XD)
影片內容是第二章中間的幾個小節
這一章的後半段還會講解這個 shellcode 是怎麼寫出來的
作者: ResolaQQ (ResolaQQ)   2016-03-22 00:00:00
完全懂了,感謝,這是第一次看到除了SQL漏洞的hack實例所以想搞清楚到底在幹嘛,影片說太快又帶專有名詞就...
作者: tuyutd0505 (Huang Jason)   2016-03-22 00:19:00
學習了XD 謝謝前輩解釋
作者: ronin728 (浪人)   2016-03-22 03:03:00
作者: james732 (好人超)   2016-03-22 12:11:00
推說明

Links booklink

Contact Us: admin [ a t ] ucptt.com