資源共享吧|易語言論壇|逆向破解教程|輔助開發(fā)教程|網(wǎng)絡(luò)安全教程|rigasin.com|我的開發(fā)技術(shù)隨記

 找回密碼
 注冊(cè)成為正式會(huì)員
查看: 1370|回復(fù): 0
打印 上一主題 下一主題

[網(wǎng)絡(luò)安全/滲透測(cè)試] 代碼審計(jì)入門教學(xué)(二)

[復(fù)制鏈接]

4

主題

4

帖子

0

精華

新手上路

Rank: 1

資源幣
10
積分
12
貢獻(xiàn)
0
在線時(shí)間
2 小時(shí)
注冊(cè)時(shí)間
2020-2-19
最后登錄
2020-5-2
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2020-2-19 23:00:48 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
代碼審計(jì)入門教學(xué)(二)

1、首先通過sublime編輯器打開上次的XXXcms文件夾:
2、搜索關(guān)鍵特征:
小白:“說道關(guān)鍵特征仔仔你理解嗎?”
仔仔:“關(guān)鍵特征應(yīng)該是數(shù)據(jù)庫(kù)查詢的語句吧~”
小白:“你這么說也勉強(qiáng)可以,不過僅僅是數(shù)據(jù)庫(kù)查詢語句還不夠,還需要數(shù)據(jù)庫(kù)查詢語句能拼接我們可以控制的參數(shù)才可以!
仔仔:“那怎么才能知道哪些參數(shù)我們可以控制呢?”
小白:“我這里給你簡(jiǎn)單的科普下吧!
首先是php獲取參數(shù)的內(nèi)置全局服務(wù)器變量有:
$_GET、$_POST、$_SERVER、$_COOKIE等方法。
其中$_GET是最常見的GET請(qǐng)求,如:
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請(qǐng)求類似于以上的3個(gè)URL,index.php中的index可能是其他字符串哦,仔仔你可不要以為只有index.php和news.php的腳本才可以注入哦。
我們?cè)L問這些請(qǐng)求,如下面這些代碼就可以獲取id的值并輸出:



可以看到id參數(shù)的值和頁(yè)面輸出的值都是“hello guys! ”。
其實(shí)這段代碼也是存在安全問題的,不信可以構(gòu)造ID值如下:
id=1%3E%3Cscript%3Ealert(1)%3C/script%3E%3C
然后網(wǎng)頁(yè)訪問:



可以看到網(wǎng)頁(yè)會(huì)彈出個(gè)窗口,不小心就弄出個(gè)XSS哈,論安全編碼的重要性。
仔仔我只跟你說$_GET獲取參數(shù)值的例子,其它的你自己去了解哈。
仔仔:“嗯嗯,我回去了解的,你繼續(xù)!
小白:“要構(gòu)成SQL注入需要數(shù)據(jù)庫(kù)查詢語句能拼接我們可以控制的參數(shù),$_GET可控參數(shù)我們了解了,接下來組合起來!
$id = $_GET[‘id’];
$sql = “select *from userid=$id;”;
這段代碼表示通過GET請(qǐng)求獲取id的值,然后拼接到$sql變量里面,接下來進(jìn)行數(shù)據(jù)庫(kù)查詢就構(gòu)成了SQL注入。
說了那么說,其實(shí)就是通過搜索$_GET關(guān)鍵字確認(rèn)注入點(diǎn)位置。
通過sublime在文件中搜索存在$_GET關(guān)鍵字的文件:




26個(gè)文件中存在247個(gè)匹配,我們需要在這么多的結(jié)果中篩選出能與數(shù)據(jù)庫(kù)查詢語句拼接的GET請(qǐng)求參數(shù)。

通過正則語法搜索既存在mysql_query又存在$_GET[的行:

mysql_query.*?\$_GET\[




第一個(gè)注入驗(yàn)證:



先進(jìn)入該段代碼對(duì)應(yīng)的源文件:



從代碼中可以看出$type變量的值等于edit條件成立就執(zhí)行elseif塊里面的內(nèi)容。

$row = mysql_fetch_array(mysql_query("SELECT * FROM sc_bannerWHERE ID=".$_GET["ID"]));

這段代碼表示先通過GET請(qǐng)求獲取ID參數(shù)傳過來的值,并且ID參數(shù)的值未做編碼轉(zhuǎn)換,然后拼接到數(shù)據(jù)庫(kù)查詢語句里面,最后執(zhí)行數(shù)據(jù)庫(kù)查詢語句?梢钥吹$type的值并沒有拼接到數(shù)據(jù)庫(kù)查詢語句里面,就算該變量過濾的再嚴(yán)格也是存在SQL注入的。

可以往上看$type確實(shí)是做了編碼處理,不過不影響我們的注入:



從這段代碼中可以看出腳本從GET請(qǐng)求獲取type的值并進(jìn)行編碼,然后判斷它的值是add還是edit,根據(jù)值的不同進(jìn)入不同的條件塊。得出以下注入鏈接:
?type=edit&ID=1
由于是后臺(tái)登錄后才能進(jìn)行的訪問,所以需要把上一篇文章提到的Cookie繞過也要利用到。
接下來驗(yàn)證下是否是注入:



構(gòu)造的URL頁(yè)面是存在的。

接下來通過burpsuite截包保存為test.txt文檔再用Sqlmap進(jìn)行注入:





第二個(gè)注入認(rèn)證:



好,就選擇這段代碼了,雙擊跳轉(zhuǎn)到這段代碼的文件:



這段代碼也是獲取GET請(qǐng)求傳過來的參數(shù)的值,然后帶入數(shù)據(jù)庫(kù)查詢語句里執(zhí)行。

構(gòu)造好鏈接訪問:




通過輸入and 1=1、and 1=2、’ and ‘1’=’1和’ and ‘1’=’2判斷是否存在注入:

and 1=1



and 1=2




‘ and ‘1’=’1



‘ and ‘1’=’2





可以看到只有and 1=1返回的頁(yè)面和正常頁(yè)面內(nèi)容一致,可以得出該處注入點(diǎn)是數(shù)字型注入。

小白:“仔仔你會(huì)手工注入嗎?貌似這不是盲注哦!”

仔仔:“手工注入不大會(huì)誒!

小白:“不會(huì)就算咯!

仔仔:“你會(huì)手工注入嗎?會(huì)的話教我唄!

小白:“看大家支不支持你學(xué)咯!

仔仔:“大家趕緊在下面評(píng)論‘支持仔仔學(xué)習(xí)手工注入’吧,仔仔在此多謝了。”

小白給仔仔發(fā)了一張獲取數(shù)據(jù)庫(kù)版本的截圖:




接下來重復(fù)下面的截包注入操作:


sqlmap -rlgid.txt –dbs



回復(fù)

使用道具 舉報(bào)

 點(diǎn)擊右側(cè)快捷回復(fù)  

本版積分規(guī)則

小黑屋|資源共享吧 ( 瓊ICP備2023000410號(hào)-1 )

GMT+8, 2025-3-12 18:25 , Processed in 0.056636 second(s), 15 queries , MemCached On.

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回復(fù) 返回頂部 返回列表