官术网_书友最值得收藏!

3.2 漏洞分析前的準備工作

本書主要是對網站開源的CMS已知的漏洞進行復現,通過代碼分析來剖析漏洞。在知道漏洞發現、產生、POC構造之前,要熟悉目標程序。下面介紹目標程序的相關知識:網站程序構成和Web程序路由。

3.2.1 網站程序構成

網站的程序大多數是用面向對象語言開發的,采用MVC設計模式。MVC的目的是將M與V的代碼實現分離,以便使用同一個程序表現不同的形式。

●M(Model):業務模型,可以理解為與數據庫交互(進行增刪改查等操作)的具體執行行為。

●V(View):視圖,用于顯示頁面或展示保存在數據庫中的數據。

●C(Controller):控制器,負責發出命令,讓Model去執行具體操作,執行結果由View顯示。

圖3-1展示了基于MVC設計模式的網站目錄構成,具體的網站程序會有些差異,但基本結構類似。

圖3-1 網站目錄構成

3.2.2 Web程序路由

網站的入口請求可根據URL路由映射知曉其鏈接運行的代碼。URL路由方式有如下幾種。

第一種,通過URL參數進行映射的方式,有四個參數,分別代表功能模塊、控制器類、方法、數據值。比如index.php?m=admin&c=index&a=method&team=1映射到的是admin模塊下的(一般是后臺程序)index控制器的method方法,參數team的值為1。

第二種,URLrewrite方式(也稱偽靜態方式),可以實現對非PHP結尾的其他后綴進行映射。通過rewrite也可以實現第一種方式,不過單純使用rewrite的方法也比較常見,一般需要配置Apache或者Nginx的rewrite規則。

第三種,pathinfo方式,比如test.com/index.php/admin/index/action/team/1,Apache在處理這個URL的時候會把index.php后面的部分(/admin/index/action/team/1)輸入到環境變量$_SERVER['PATH_INFO']中,然后路由器再通過解析這個字符串進行分析。index.php后面的部分根據各個框架的不同而有所區別,涉及的結構基本如下:

●http://domain.com/模塊名/控制器/ => http://domain.com/?m=模塊名&c=控制器

●http://domain.com/模塊名/控制器/方法/ => http://domain.com/?m=模塊名&c=控制器&a=方法

●http://domain.com/模塊名/控制器/?參數1=值1&…參數N=值N => http://domain.com/?m=模塊名&c=控制器&參數1=值1&…參數N=值N

●http://domain.com/模塊名/控制器/方法/?參數1=值1&…參數N=值N => http://domain.com/?m=模塊名&c=控制器&a=方法&參數1=值1&…參數N=值N

主站蜘蛛池模板: 临海市| 华亭县| 壶关县| 鹤壁市| 藁城市| 南部县| 扎赉特旗| 崇义县| 许昌县| 高密市| 高要市| 桑植县| 扶沟县| 呼玛县| 中阳县| 福海县| 中超| 班玛县| 朔州市| 十堰市| 怀柔区| 道孚县| 武邑县| 龙州县| 鸡东县| 花莲县| 晋江市| 遵义市| 莫力| 宁南县| 黔西县| 奈曼旗| 察哈| 瓮安县| 梓潼县| 扎赉特旗| 肥东县| 东平县| 昌平区| 阿坝| 屯昌县|