資源共享吧|易語言論壇|逆向破解教程|輔助開發(fā)教程|網(wǎng)絡安全教程|m.hailashopping.com|我的開發(fā)技術隨記
標題:
代碼審計入門教學(二)
[打印本頁]
作者:
代碼審計教學
時間:
2020-2-19 23:00
標題:
代碼審計入門教學(二)
代碼審計入門教學(二)
1、首先通過sublime編輯器打開上次的XXXcms文件夾:
2、搜索關鍵特征:
小白:“說道關鍵特征仔仔你理解嗎?”
仔仔:“關鍵特征應該是數(shù)據(jù)庫查詢的語句吧~”
小白:“你這么說也勉強可以,不過僅僅是數(shù)據(jù)庫查詢語句還不夠,還需要數(shù)據(jù)庫查詢語句能拼接我們可以控制的參數(shù)才可以!
仔仔:“那怎么才能知道哪些參數(shù)我們可以控制呢?”
小白:“我這里給你簡單的科普下吧!
首先是php獲取參數(shù)的內置全局服務器變量有:
$_GET、$_POST、$_SERVER、$_COOKIE等方法。
其中$_GET是最常見的GET請求,如:
http://www.yuesec.com/index.php?id=1
http://www.yuesec.com/index.php?classid=1
http://www.yuesec.com/news.php?id=1
GET請求類似于以上的3個URL,index.php中的index可能是其他字符串哦,仔仔你可不要以為只有index.php和news.php的腳本才可以注入哦。
我們訪問這些請求,如下面這些代碼就可以獲取id的值并輸出:
(, 下載次數(shù): 123)
上傳
點擊文件名下載附件
可以看到id參數(shù)的值和頁面輸出的值都是“hello guys! ”。
其實這段代碼也是存在安全問題的,不信可以構造ID值如下:
id=1%3E%3Cscript%3Ealert(1)%3C/script%3E%3C
然后網(wǎng)頁訪問:
(, 下載次數(shù): 126)
上傳
點擊文件名下載附件
可以看到網(wǎng)頁會彈出個窗口,不小心就弄出個XSS哈,論安全編碼的重要性。
仔仔我只跟你說$_GET獲取參數(shù)值的例子,其它的你自己去了解哈。
仔仔:“嗯嗯,我回去了解的,你繼續(xù)。”
小白:“要構成SQL注入需要數(shù)據(jù)庫查詢語句能拼接我們可以控制的參數(shù),$_GET可控參數(shù)我們了解了,接下來組合起來!
$id = $_GET[‘id’];
$sql = “select *from userid=$id;”;
這段代碼表示通過GET請求獲取id的值,然后拼接到$sql變量里面,接下來進行數(shù)據(jù)庫查詢就構成了SQL注入。
說了那么說,其實就是通過搜索$_GET關鍵字確認注入點位置。
通過sublime在文件中搜索存在$_GET關鍵字的文件:
(, 下載次數(shù): 120)
上傳
點擊文件名下載附件
26個文件中存在247個匹配,我們需要在這么多的結果中篩選出能與數(shù)據(jù)庫查詢語句拼接的GET請求參數(shù)。
通過正則語法搜索既存在mysql_query又存在$_GET[的行:
mysql_query.*?\$_GET\[
(, 下載次數(shù): 122)
上傳
點擊文件名下載附件
第一個注入驗證:
(, 下載次數(shù): 120)
上傳
點擊文件名下載附件
先進入該段代碼對應的源文件:
(, 下載次數(shù): 122)
上傳
點擊文件名下載附件
從代碼中可以看出$type變量的值等于edit條件成立就執(zhí)行elseif塊里面的內容。
$row = mysql_fetch_array(mysql_query("SELECT * FROM sc_bannerWHERE ID=".$_GET["ID"]));
這段代碼表示先通過GET請求獲取ID參數(shù)傳過來的值,并且ID參數(shù)的值未做編碼轉換,然后拼接到數(shù)據(jù)庫查詢語句里面,最后執(zhí)行數(shù)據(jù)庫查詢語句?梢钥吹$type的值并沒有拼接到數(shù)據(jù)庫查詢語句里面,就算該變量過濾的再嚴格也是存在SQL注入的。
可以往上看$type確實是做了編碼處理,不過不影響我們的注入:
(, 下載次數(shù): 125)
上傳
點擊文件名下載附件
從這段代碼中可以看出腳本從GET請求獲取type的值并進行編碼,然后判斷它的值是add還是edit,根據(jù)值的不同進入不同的條件塊。得出以下注入鏈接:
?type=edit&ID=1
由于是后臺登錄后才能進行的訪問,所以需要把上一篇文章提到的Cookie繞過也要利用到。
接下來驗證下是否是注入:
(, 下載次數(shù): 117)
上傳
點擊文件名下載附件
構造的URL頁面是存在的。
接下來通過burpsuite截包保存為test.txt文檔再用Sqlmap進行注入:
(, 下載次數(shù): 130)
上傳
點擊文件名下載附件
第二個注入認證:
(, 下載次數(shù): 120)
上傳
點擊文件名下載附件
好,就選擇這段代碼了,雙擊跳轉到這段代碼的文件:
(, 下載次數(shù): 130)
上傳
點擊文件名下載附件
這段代碼也是獲取GET請求傳過來的參數(shù)的值,然后帶入數(shù)據(jù)庫查詢語句里執(zhí)行。
構造好鏈接訪問:
(, 下載次數(shù): 114)
上傳
點擊文件名下載附件
通過輸入and 1=1、and 1=2、’ and ‘1’=’1和’ and ‘1’=’2判斷是否存在注入:
and 1=1
(, 下載次數(shù): 117)
上傳
點擊文件名下載附件
and 1=2
(, 下載次數(shù): 114)
上傳
點擊文件名下載附件
‘ and ‘1’=’1
(, 下載次數(shù): 125)
上傳
點擊文件名下載附件
‘ and ‘1’=’2
(, 下載次數(shù): 120)
上傳
點擊文件名下載附件
可以看到只有and 1=1返回的頁面和正常頁面內容一致,可以得出該處注入點是數(shù)字型注入。
小白:“仔仔你會手工注入嗎?貌似這不是盲注哦!”
仔仔:“手工注入不大會誒!
小白:“不會就算咯!
仔仔:“你會手工注入嗎?會的話教我唄!
小白:“看大家支不支持你學咯!
仔仔:“大家趕緊在下面評論‘支持仔仔學習手工注入’吧,仔仔在此多謝了!
小白給仔仔發(fā)了一張獲取數(shù)據(jù)庫版本的截圖:
(, 下載次數(shù): 115)
上傳
點擊文件名下載附件
接下來重復下面的截包注入操作:
(, 下載次數(shù): 119)
上傳
點擊文件名下載附件
sqlmap -rlgid.txt –dbs
(, 下載次數(shù): 120)
上傳
點擊文件名下載附件
歡迎光臨 資源共享吧|易語言論壇|逆向破解教程|輔助開發(fā)教程|網(wǎng)絡安全教程|m.hailashopping.com|我的開發(fā)技術隨記 (http://m.hailashopping.com/)
Powered by Discuz! X3.4