新手上路

- 資源幣
- 10
- 積分
- 12
- 貢獻(xiàn)
- 0
- 在線時(shí)間
- 2 小時(shí)
- 注冊時(shí)間
- 2020-2-19
- 最后登錄
- 2020-5-2
|
代碼審計(jì)入門教學(xué)(二)
1、首先通過sublime編輯器打開上次的XXXcms文件夾:
2、搜索關(guān)鍵特征:
小白:“說道關(guān)鍵特征仔仔你理解嗎?”
仔仔:“關(guān)鍵特征應(yīng)該是數(shù)據(jù)庫查詢的語句吧~”
小白:“你這么說也勉強(qiáng)可以,不過僅僅是數(shù)據(jù)庫查詢語句還不夠,還需要數(shù)據(jù)庫查詢語句能拼接我們可以控制的參數(shù)才可以。”
仔仔:“那怎么才能知道哪些參數(shù)我們可以控制呢?”
小白:“我這里給你簡單的科普下吧!
首先是php獲取參數(shù)的內(nèi)置全局服務(wù)器變量有:
$_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的值并輸出:
dm13.jpg (9.11 KB, 下載次數(shù): 102)
下載附件
保存到相冊
2020-2-19 22:47 上傳
可以看到id參數(shù)的值和頁面輸出的值都是“hello guys! ”。
其實(shí)這段代碼也是存在安全問題的,不信可以構(gòu)造ID值如下:
id=1%3E%3Cscript%3Ealert(1)%3C/script%3E%3C
然后網(wǎng)頁訪問:
DM14.jpg (7.56 KB, 下載次數(shù): 101)
下載附件
保存到相冊
2020-2-19 22:49 上傳
可以看到網(wǎng)頁會彈出個窗口,不小心就弄出個XSS哈,論安全編碼的重要性。
仔仔我只跟你說$_GET獲取參數(shù)值的例子,其它的你自己去了解哈。
仔仔:“嗯嗯,我回去了解的,你繼續(xù)。”
小白:“要構(gòu)成SQL注入需要數(shù)據(jù)庫查詢語句能拼接我們可以控制的參數(shù),$_GET可控參數(shù)我們了解了,接下來組合起來!
$id = $_GET[‘id’];
$sql = “select *from userid=$id;”;
這段代碼表示通過GET請求獲取id的值,然后拼接到$sql變量里面,接下來進(jìn)行數(shù)據(jù)庫查詢就構(gòu)成了SQL注入。
說了那么說,其實(shí)就是通過搜索$_GET關(guān)鍵字確認(rèn)注入點(diǎn)位置。
通過sublime在文件中搜索存在$_GET關(guān)鍵字的文件:
DM15.jpg (24.54 KB, 下載次數(shù): 98)
下載附件
保存到相冊
2020-2-19 22:49 上傳
26個文件中存在247個匹配,我們需要在這么多的結(jié)果中篩選出能與數(shù)據(jù)庫查詢語句拼接的GET請求參數(shù)。
通過正則語法搜索既存在mysql_query又存在$_GET[的行:
mysql_query.*?\$_GET\[
Dm16.jpg (44.93 KB, 下載次數(shù): 98)
下載附件
保存到相冊
2020-2-19 22:50 上傳
第一個注入驗(yàn)證:
DM17.jpg (17.36 KB, 下載次數(shù): 98)
下載附件
保存到相冊
2020-2-19 22:51 上傳
先進(jìn)入該段代碼對應(yīng)的源文件:
DM18.jpg (26.46 KB, 下載次數(shù): 101)
下載附件
保存到相冊
2020-2-19 22:51 上傳
從代碼中可以看出$type變量的值等于edit條件成立就執(zhí)行elseif塊里面的內(nèi)容。
$row = mysql_fetch_array(mysql_query("SELECT * FROM sc_bannerWHERE ID=".$_GET["ID"]));
這段代碼表示先通過GET請求獲取ID參數(shù)傳過來的值,并且ID參數(shù)的值未做編碼轉(zhuǎn)換,然后拼接到數(shù)據(jù)庫查詢語句里面,最后執(zhí)行數(shù)據(jù)庫查詢語句?梢钥吹$type的值并沒有拼接到數(shù)據(jù)庫查詢語句里面,就算該變量過濾的再嚴(yán)格也是存在SQL注入的。
可以往上看$type確實(shí)是做了編碼處理,不過不影響我們的注入:
DM19.jpg (13.93 KB, 下載次數(shù): 102)
下載附件
保存到相冊
2020-2-19 22:52 上傳
從這段代碼中可以看出腳本從GET請求獲取type的值并進(jìn)行編碼,然后判斷它的值是add還是edit,根據(jù)值的不同進(jìn)入不同的條件塊。得出以下注入鏈接:
?type=edit&ID=1
由于是后臺登錄后才能進(jìn)行的訪問,所以需要把上一篇文章提到的Cookie繞過也要利用到。
接下來驗(yàn)證下是否是注入:
DM20.jpg (17.72 KB, 下載次數(shù): 91)
下載附件
保存到相冊
2020-2-19 22:53 上傳
構(gòu)造的URL頁面是存在的。
接下來通過burpsuite截包保存為test.txt文檔再用Sqlmap進(jìn)行注入:
DM21.jpg (34.21 KB, 下載次數(shù): 109)
下載附件
保存到相冊
2020-2-19 22:54 上傳
第二個注入認(rèn)證:
DM22.jpg (13.3 KB, 下載次數(shù): 96)
下載附件
保存到相冊
2020-2-19 22:55 上傳
好,就選擇這段代碼了,雙擊跳轉(zhuǎn)到這段代碼的文件:
DM23.jpg (10.68 KB, 下載次數(shù): 108)
下載附件
保存到相冊
2020-2-19 22:56 上傳
這段代碼也是獲取GET請求傳過來的參數(shù)的值,然后帶入數(shù)據(jù)庫查詢語句里執(zhí)行。
構(gòu)造好鏈接訪問:
DM24.jpg (23.94 KB, 下載次數(shù): 94)
下載附件
保存到相冊
2020-2-19 22:56 上傳
通過輸入and 1=1、and 1=2、’ and ‘1’=’1和’ and ‘1’=’2判斷是否存在注入:
and 1=1
DM25.jpg (24.41 KB, 下載次數(shù): 95)
下載附件
保存到相冊
2020-2-19 22:57 上傳
and 1=2
DM26.jpg (23.95 KB, 下載次數(shù): 93)
下載附件
保存到相冊
2020-2-19 22:57 上傳
‘ and ‘1’=’1
DM27.jpg (22.78 KB, 下載次數(shù): 102)
下載附件
保存到相冊
2020-2-19 22:58 上傳
‘ and ‘1’=’2
DM28.jpg (22.68 KB, 下載次數(shù): 99)
下載附件
保存到相冊
2020-2-19 22:58 上傳
可以看到只有and 1=1返回的頁面和正常頁面內(nèi)容一致,可以得出該處注入點(diǎn)是數(shù)字型注入。
小白:“仔仔你會手工注入嗎?貌似這不是盲注哦!”
仔仔:“手工注入不大會誒。”
小白:“不會就算咯!
仔仔:“你會手工注入嗎?會的話教我唄!
小白:“看大家支不支持你學(xué)咯!
仔仔:“大家趕緊在下面評論‘支持仔仔學(xué)習(xí)手工注入’吧,仔仔在此多謝了!
小白給仔仔發(fā)了一張獲取數(shù)據(jù)庫版本的截圖:
DM29.jpg (9.76 KB, 下載次數(shù): 91)
下載附件
保存到相冊
2020-2-19 22:59 上傳
接下來重復(fù)下面的截包注入操作:
DM30.jpg (23.01 KB, 下載次數(shù): 96)
下載附件
保存到相冊
2020-2-19 23:00 上傳
sqlmap -rlgid.txt –dbs
dm31.jpg (33.91 KB, 下載次數(shù): 98)
下載附件
保存到相冊
2020-2-19 23:00 上傳
|
|