作者:Terry Zhang
來源:知乎
著作權歸作者所有。商業(yè)轉載請聯(lián)系作者獲得授權,非商業(yè)轉載請注明出處。
國內學習漏洞挖掘習慣先進行所謂的“打基礎”,啃各種編程書,然后再去學習漏洞挖掘,這樣的問題在于無法控制好學編程的程度,而且先單純的學習編程也是極其枯燥的,可能很多人無法堅持。下面來說下國外同學一般得學習過程:
既然我們不是要去深造編程技術,而主要為了學習漏洞挖掘。我建議首先先把編程打個底子,底子的概念是:“掌握該語言的基本語法,常用函數(shù),寫幾個demo即可。”有了底子再去看以前的漏洞分析文章,看的過程中會發(fā)現(xiàn)吃力的點,這樣再有目的的去跟進相關的編程技術點。而不是先一味的去啃編程書。
比如學習PHP漏洞挖掘:
先掌握php基本語法,常用php函數(shù),對常用的php函數(shù)寫一些demo。然后開始看以前php應用漏洞分析的文章,開始的一些基本漏洞比如簡單的純get,post沒有intval或者強制轉換造成的sql注入,比如沒有htmlspecialchar造成的簡單xss??催@些基本的東西我們之前打的底子就完全夠用了。
然后我們看一些較高級漏洞的利用,比如各種變量覆蓋漏洞,比如unserialize造成的代碼執(zhí)行,我們開始看的時候可能會覺得吃力。那就需要回過頭去先看看extract等函數(shù)具體用法,for each對$_REQUEST進行變量生成的過程是怎樣的,unserialize函數(shù)的執(zhí)行流程是怎樣的。然后再去看之前的技術文章就會豁然開朗了。這只是基本的php漏洞挖掘,熟練了之后嘗試著去看一些框架的漏洞分析,比如thinkphp,這些又涉及到OOP的相關知識,那么再回過頭去學習PHP OOP編程,然后再繼續(xù)。如此循環(huán)下來,邊學習漏洞挖掘邊學習編程,這樣的效率和效果都要比先單純的啃編程書要強很多。這也是國內外技術人員做研究的一大差異,國內喜歡先學習理論基礎,而國外注重先應用,應用的過程中遇到困難再去學習理論基礎。