1. 程式人生 > >小白的程式碼審計之路(一)

小白的程式碼審計之路(一)


一般框架中可訪問的方法都要求屬性為public並且方法名要符合命名規範才能被瀏覽器訪問到,在ThinkPHP中預設的規則要求就是隻要方法名為public就可以被訪問。(如SlightPHP中不僅需要方法為public,還需要方法名字首為page.具體可以參考各框架說明)。這樣我們就可以完美的定位檔案和方法了。(框架小白的我真是開心O(∩_∩)O~~)

六、框架傳參規則

在我們的日常測試中可能會遇到如下三種url請求型別:

http://127.0.0.1/?c=bb&a=Citystation&id=1
http://127.0.0.1/bb-Citystation-id-1
http://127.0.0.1/bb/Citystation/id/1

我們可以簡單的理解為它們使用了不同的分隔符而已,第一二個引數都是告訴框架此次請求的是哪個檔案中的哪個方法,而後面的引數就是我們的get傳參了一個變數一個值.如本例中我們請求的是bb.page.php中的Citystation方法,get傳遞了一個id為1的值。




七、總結
1、當拿到一個框架開發的專案後,首先找入口檔案,然後檢視他的相應配置檔案,看看它都載入了哪些東西,配置了哪些引數,是否有做全域性安全過濾。
2、所有可以訪問url頁面邏輯,都會放在Controller目錄裡,除非遇到了搞怪的程式猿們。
3、如果找不到對應的檔案,那一定是框架路由在作怪,那就去看看配置檔案中的路由規則,一個應用目錄下只有一個配置檔案,每個應用目錄下的模組也有一個配置檔案。

    mvc框架中的這些概念都是萬變不離其宗的,變的只是不同的名字,不同的呼叫方式。瞭解了這些基本概念後,我們就可以愉快的找到對應的程式碼進行審計了。但這樣還不能做到像大牛一樣,從頭到尾的全看程式碼來審計漏洞,因此在日常工作中,我們可以結合黑盒測試,每次發現有問題的點,就去看看有問題的程式碼都長什麼樣。當有了一些靈感,能準確的看出程式碼哪裡寫的有問題後,在日常的測試中,就可以對每個地址,針對某一個功能抓一個包,看看請求的哪個檔案,傳遞了哪些引數,然後就可以直接審計程式碼是否有問題了。當你完全瞭解了業務邏輯和框架之後,就可以從頭到尾只讀程式碼來審計漏洞了。

相關推薦

程式碼審計

一般框架中可訪問的方法都要求屬性為public並且方法名要符合命名規範才能被瀏覽器訪問到,在ThinkPHP中預設的規則要求就是隻要方法名為public就可以被訪問。(如SlightPHP中不僅需要方法為public,還需要方法名字首為page.具體可以參考各框架說明)。這樣我們就可以完美的定位檔案和方法了。

Java進階

1、字串操作:replace方法(舊字串,新子串)。 Scanner scanner = new Scanner(System.in); System.out.println("請輸入"); // 接收使用者的輸入的字串 String s1 = scanner.next(); // 接受整型 i

的滲透——SQL注入漏洞原理詳解

SQL注入漏洞簡介 亂七八糟的就不多說了,自己百度去 SQL注入原理 想要更好的學習SQL注入,那麼我們就必須要深入的瞭解每種資料庫的SQL語法及特性。下面通過一個經典的萬能密碼的例子帶大家來撥開一下SQL注入漏洞的神祕面紗。本次環境為:DVWA的第一關(DVW

的滲透——XSS跨站指令碼漏洞詳解

XSS簡介 XSS又叫CSS(Cross Site Script),即跨站指令碼攻擊。是指攻擊者在網頁中嵌入客戶端指令碼,通常是JavaScript編寫的惡意程式碼,當用戶使用瀏覽器瀏覽被嵌入惡意程式碼

微信遊戲填坑

1、註冊微信小程式賬號 http://mp.weixin.qq.com 2、下載開發工具 3、新建專案,選擇小程式 4、選好目錄、填寫專案名稱、可選是否建立demo或是空專案啟動 5、若不選擇“建立普通快速啟動模板”會提示如下 在目錄下新建game.jsongame.

微信程式填坑:text空格符號以及省略號

1、text的空格符 首先需要設定<text> 控制元件的decode值 decode可以解析的有&nbsp; &lt; &gt; &amp; &

的滲透——SQL注入漏洞原理詳解(SQL Server)

常見資料庫注入 對於大多數的資料庫而言,SQL注入的原理基本相似,因為每個資料庫都遵循一個SQL語法標準。但是他們之間也存在包括像語法、函式等許多細微的差異。所以,在針對不同的資料庫注入時,思路、方法也不可能完全一樣。因個人的經驗所限,在接下來的例項中,只討論O

的springboot、繼承Redis以及@Cacheable註解實現Redis快取

0、前言   在專案中,快取作為一種高效的提升效能的手段,幾乎必不可少,Redis作為其中的佼佼者被廣泛應用; 一、spring boot整合Redis 1、新增依賴 <dependency> <groupId>org.spring

cocos creator微信遊戲優化

目前在做一個放置類的微信小遊戲,時間過去了一個多月,大的功能已經很少了,是時候來一波優化了。策劃那邊還是在瀏覽器上檢視遊戲,反映了幾個問題,主要是操作延遲。這個分為幾個方面: 網路延遲:包括資源伺服器延遲,小程式的資源大部分都是放在資源伺服器上的,載入這些資源會出現延遲;另外還有遊戲邏輯

微信程式學習

1、前言 微信小程式所使用的是騰訊自己開發的MINA框架,MINA框架跟主流框架有很大的相似之處,是一個MVVM框架,很慶幸本人先前有學過一點點VUE所以入門MINA框架還算比較順利,由於需要完全熟悉MINA框架我還需要學習很多,所以微信小程式學習之路篇打算一

web前端進化——程式開發

最近學習前端感覺很多知識學起來容易,但是很多知識點很容易忘記,想做一個工具來方便自己來學習,正好結合小程式,分享給大家。照顧初學者,可能講的比較細,理解哈。 準備工具 小程式一個 已申請(名稱是:we

Java學習從基礎到精通——技術的成長Java學習筆記第五天

for迴圈、巢狀迴圈、break的講解、while和do...while...的講解、陣列的講解 1.for迴圈: 固定次數迴圈,應用率高。 迴圈的選擇規則: 1)先看固定次數還是不固定次數:   1.1)固定次數------------------------直接

ASP.NET MVC4 菜鳥專案改造示例程式碼擴充套件使用者資訊管理

模板建立示例專案 MVC的基礎內容我就不說了,入門建議看看官方的MvcMovie示例。       開啟VS2012,【新建專案】,選擇【ASP.NET MVC 4 Web應用程式】,名稱叫MyMvc(這隨便取,但常規是公司.專案的名稱空間),按【確定】,模板選【I

的springboot十四、AOP

0、前言 1、什麼是AOP   AOP(面向切面程式設計),是一種橫切技術,是對OOP的補充和完善;   使用AOP的橫切,可以對系統進行無侵入性的日誌監聽、事務、許可權管理等;   思想上跟攔截器其實類似;攔截器是對action進行攔截處理,AOP是對切面進行攔截處理,其實切面也屬於一種action

的springboot十八、i18n多語言支援後端篇

0-前言   在有些系統中,比如網站,往往需要支援多國語言,英文版中文版什麼的,這個其實也不難;   今天我們就來介紹spring boot中用i18n在後端支援多語言;   當然,也可以直接在前端用i18n直接支援多語言,這個我們以後在前端系列中再介紹; 1-實現   簡單6步,輕鬆實現: 1-1、增加多語

前端 —— node.js摸爬打滾

turn lan name resp function oba ack val 括號 安裝: window下的安裝,node.js直接上官網下載:https://nodejs.org/en/ 選擇LTS,也就是版本號比較低的穩定版,下載下來後運行下載的文件進行安裝; 通

我的學習SQL盲註學習篇

網絡安全 dvwa sql盲註 我的學習之路,現在零基礎,是一個小白,請各位大牛批評指正!寫下這篇,是對自己的一個思路的整理,僅供參考。 Dvwa中登錄進入,首先在DVWA Security中設置等級為low,然後進入SQL Injection(blind),隨意輸入一個數字進行抓包,然後找

成長 GridLayout 布局

bsp ren 1.0 androi enc 代碼區 andro XML orien 效果圖 代碼區 <?xml version="1.0" encoding="utf-8"?><GridLayout xmlns:android="htt

react爬坑--報錯output.path不是絕對路徑

bpa file 文件 開始 put pac 這就是 文件頭部 之前   之前,一直在糾結是學習angular好,學習vue好,還是學習react好,網上一搜索,也是各種對比,各種互噴,看過之後更糾結。就跟小時候一樣糾結長大了是上清華好,還是上北大好,最後證明我想多了。總之

初識vue.js,我的學習

自動打開 下一步 鏡像 分享圖片 bpa demo 中間 前端技術 width 在以前做項目時經常是新建一些html、css、等一些文件,但在接觸了vue.js之後我發現我已經有點看不懂前端了,這對於我這麽一個菜鳥來說實在是很苦逼的事情。現在的前端技術都離不開