一、淺談
有一個(gè)別的公司的測(cè)試問我,會(huì)sql注入么,剛開始我有點(diǎn)懵,因?yàn)楸旧砗诤袦y(cè)試sql注入這塊其實(shí)是一個(gè)測(cè)試關(guān)注點(diǎn),但一直只是聽說過,沒用過,后來簡(jiǎn)單的入門了一下,才知道拿別人的后臺(tái)不只是“白帽”能做到,對(duì)于測(cè)試來說也是輕而易舉
二、什么是sql注入
我的理解就是通過網(wǎng)頁傳遞給數(shù)據(jù)庫的數(shù)據(jù),開發(fā)人員未對(duì)此類數(shù)據(jù)做過濾限制,通過這些未被過濾的數(shù)據(jù)進(jìn)行sql語句的代碼進(jìn)行攻擊。
常見可被注入的網(wǎng)址一般如下
1.www..com/index.asp?page=11
2.www..com/news.asp?id=1&page=2
3.www.?id=11
直接通過頁面?zhèn)鬟fGET請(qǐng)求參數(shù)頁面,是比較經(jīng)典的sql注入網(wǎng)址,但絕對(duì)不是所有的GET請(qǐng)求頁面都能被注入,具體能被注入的網(wǎng)址需要自己去試,或者自己去用工具,如果基礎(chǔ)比較好的人可以自己編寫簡(jiǎn)單的注入工具
三、如何判斷注入
常見的注入and/or/',通過這個(gè)三個(gè)可以判斷網(wǎng)站是否存在注入
對(duì)于使用access數(shù)據(jù)庫的網(wǎng)站,一般注入分為以下幾個(gè)步驟
判斷注入 :使用 and/or/'
猜解表名 :使用 order by 和 UNION 聯(lián)合操作
猜解列名 :使用 UNION 操作
猜解數(shù)據(jù) :根據(jù)猜解的列名采集數(shù)據(jù)
根據(jù)上面的四個(gè)步驟,我們?cè)跀?shù)據(jù)庫模擬操作看實(shí)際效果
- 單引號(hào)的時(shí)候數(shù)據(jù)庫直接報(bào)錯(cuò),對(duì)應(yīng)web頁面可能會(huì)出現(xiàn)對(duì)應(yīng)的報(bào)錯(cuò)信息

- and 1=1 真and真為真,對(duì)應(yīng)web頁面數(shù)據(jù)返回正常

+and 1=2 真and假為假,所以沒有數(shù)據(jù)返回,對(duì)應(yīng)web頁面也應(yīng)該無數(shù)據(jù)返回

現(xiàn)在假如我們判斷頁面符合注入
首先知道數(shù)據(jù)庫中ORDER BY 關(guān)鍵字用于對(duì)結(jié)果集按照一個(gè)列或者多個(gè)列進(jìn)行排序。
- 使用order by 判斷字段數(shù)
這里我先大于實(shí)際字段數(shù)時(shí)數(shù)據(jù)庫報(bào)錯(cuò)

當(dāng)我等于實(shí)際字段數(shù)時(shí)

這時(shí)候我可以判斷出這個(gè)表的字段有五個(gè),下一步使用UNION,這里我們首先要知道union的意義
UNION 操作符用于合并兩個(gè)或多個(gè) SELECT 語句的結(jié)果集。
請(qǐng)注意,UNION 內(nèi)部的每個(gè) SELECT 語句必須擁有相同數(shù)量的列。
列也必須擁有相似的數(shù)據(jù)類型。同時(shí),每個(gè) SELECT 語句中的列的順序必須相同。
根據(jù)這個(gè)猜表我們用null 占位字段,使其達(dá)到讓兩個(gè)表的字段一致
-
表名猜錯(cuò)時(shí)會(huì)出現(xiàn)報(bào)錯(cuò)
image.png -
表名猜對(duì)時(shí)數(shù)據(jù)展示正常
image.png -
這時(shí)候通過替換方法猜測(cè)列名
輸入錯(cuò)誤字段名稱報(bào)錯(cuò)
image.png
在任意位置輸入正確字段,字段內(nèi)容全部顯示

我們運(yùn)用這個(gè)基礎(chǔ)知識(shí)去測(cè)一個(gè)網(wǎng)站看我們能不能拿到網(wǎng)站數(shù)據(jù),這是我從某網(wǎng)站拿到的表
表:
+------------+
| ad |
| admin_user |
| menu |
| news |
| system |
| video |
+------------+
字段:
+----------+
| Column |
+----------+
| admin |
| id |
| keywords |
| password |
+----------+
用戶名密碼其實(shí)我也拿到了,但點(diǎn)到為止就好


