這不是系統決定的而是程式語言決定的
UNIX系列的系統都是使用C語言編寫的而C語言有一個重要的特點那便是很容易出現溢位漏洞這不是語言的缺陷而是程式設計師的不嚴謹而造成的
系統裡面的程式實在是太多了程式碼也是成千上萬行總是會有人粗心沒有嚴格檢查各種記憶體邊界的這便給攻擊者留下了可趁之機
林鴻透過特定指令對方的伺服器進行查詢得出了對方APACHE的版本號發現並不是最新版本他記得當初自己在架設網站的時候曾發現過APACHE的一個溢位漏洞當時並沒有深入研究
他從官方網站的FTP上將這個版本給下載下來然後直接在自己的本機上進行除錯跟蹤直接按照記憶對那個溢位漏洞進行測試最終發現這個漏洞至今沒有被修復
很有可能是這個溢位漏洞太過微小和隱秘並沒有引起開發組的注意也沒有引起什麼危害所以一直沒有被發現
既然有這麼一個突破口林鴻也就沒有再去想其他法子而是繼續對這個溢位漏洞進行分析看看是否能夠讓它執行自己特定的溢位程式(本站您的支援就是我最大的動力)
第470章 棋逢敵手
溢位,顧名思義,就是容器已經滿了,東西從裡面跑了出來。
在計算機領域中,溢位通常指的是記憶體中的“棧”結構溢位。“棧”是記憶體中一個類似於瓶子的資料結構,裡面按照“先進後出”的規則儲存各種變數和指令。
正常的程式碼,在棧滿了的時候,就會進行判斷,然後進行相應處理,不會在其滿了之後,還繼續向其中壓入資料,而是會停止壓入,或者清空棧裡面的資料,再繼續壓入。
而很多程式設計師在編寫程式的時候,往往會對這一步進行忽略,或者忘記了對這一步進行檢查。
大家都知道溢位的危害,但是還是存在著很多這樣的例子,原因就在於這個過程是程式設計函式自動進行的,例如C語言,只要程式設計師自己編寫一個函式,那麼肯定就會有一個“棧”結構被建立起來,這個函式里面的變數和資料全部壓入這個棧中,然後再按照執行的順序,一步一步彈出。
函式是程式中必然會用到的,並且是大量用到,也就是說,棧這個結構也是隨處可見,可是要是不對其中的邊界條件做嚴格的檢查的話,很有可能就會產生溢位漏洞,尤其是一些涉及到操作核心資料的函式。
林鴻對這種漏洞的利用簡直是得心應手,當初他破解德州儀器的計算器的時候,使用的方式就是緩衝區溢位破解,成功讓計算器的一個緩衝器溢位,然後執行他的破解程式碼。
而這一次,他想要做的事情也是一樣,既然已經發現了這樣的溢位可能,他接下來要做的,便是想辦法將自己的程式碼插入進去,然後透過溢位的方式,執行自己的未授權程式碼。
這種方式。有點像是給一個瓶子不停地壓入東西,然後再對方滿了的時候,另外在瓶口處接一個彎彎的管子,將資料流引導從自己的管子裡過一遍。然後再將資料流引回瓶中。
LINX有個好處,很多東西都可以以外掛的形式進行安裝,為了能夠讓APACHE執行起來,林鴻直接將相容UNIX的檔案系統掛載進來,然後再將和藍軍相同的版本的APACHE安裝在本地,再使用除錯工具進行跟蹤除錯。
這是一個細緻活,從除錯工具中所看到的內容。都是十六進位制的機器碼,要想讀懂其中的關鍵程式碼,必須對彙編和機器碼相當熟悉。
林鴻有針對性地對這個溢位漏洞進行除錯,相對來說進展還是很快的,一步一步接近他想要得到的結果。
林鴻在除錯程式碼的時候,其他人也沒閒著。
劉輝繼續對藍軍的目標進行洪水攻擊,不但自己的機器