在sql注入時應該記住的一些東西
information_schema庫存放了所有庫的資訊
information_schema.columns包含了所有表的字段
table_name表名
table_schema資料庫名
column_name列名
information_schema.tables包含所有庫的表名
group_concat()函式能將相同的行組合起來,省老事了。
聯合查詢注入的原理
聯合查詢注入的前提就是要有顯示位(通過查詢從資料庫返回到頁面的內容)。
因本人為萌新一枚,在這裡就以sqli-labs(一)為例子進行說明。
開啟**,進入lesson 1
1、判斷注入點
閉合符號一般是』、"、』)、")或者沒有閉合符號,而注釋符號一般是 --+
在搜尋框內輸入?id=1』,發現提示錯誤。
用注釋符號–+注釋後發現正常
說明注入點是單引號』
2、判斷列數
在輸入框內輸入id=1,2,3;時,均有不同的資料返回。然後輸入
發現
說明一共有三列
3、聯合查詢開始
輸入
?id=
0' union select 1,2
,3--+
在這裡的意思是將id的值等於乙個在資料庫中不存在的數,通過聯合查詢可以看出輸入的資料會在**顯示出來。
結果顯示出了2 3的位置,所以在2 3位置我們便可以輸入我們想用的句子。
爆資料庫
爆資料庫時可以通過乙個**database()**語句來檢視當前的資料庫
爆資料表在上面說的一些語句,這裡就要用到了
既然是爆資料表,首先就需要乙個group_concat()函式加乙個資料表名table_name,然後還需要指定乙個**,而**就是所有庫的表名從上面爆出來的資料庫中
爆欄位
?id=
0' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users' --
+
爆值
這樣,值就被爆出來了!
後續更改:
改正了之前文章編輯時的錯誤。
sql-labs
第二關:閉合符號:'
第三關閉合符號:')
第四關閉合符號:")
通過sqli labs學習SQL注入(2)
我的理解是,頁面不給出任何錯誤資訊的都屬於盲注 基於布林的盲注 通過返回的頁面是否正確來判斷,如果後台做了限制,此方法無效 例如less 9,錯誤也會顯示you are in.基於報錯的盲注 構造乙個能回顯錯誤資訊的sql語句,如果後台做了限制,此方法無效 例如less 8以及後面的幾關,錯誤資訊被...
通過sqli labs學習SQL注入(4)
這次用sqlmap來通關一次sqli labs 主要使用的引數 例項演示 目標url 選擇感興趣的資料庫,這裡選擇security 檢視指定表名的列 直接dump出users表的內容 也可以加 c username dump指定列username的內容,dump alldump所有資料庫的內容 sq...
sql注入練習 SQLi LABS 1
本篇是針對sqli labs靶場的less1 less4的sql注入練習。主要涉及報錯型注入 聯合查詢注入。第1 4關是都是error based,只不過方式不一樣,可能是通過單引號 雙引號等進行試錯。以第一關為例 輸入引數獲取使用者名稱密碼 如何通過sql注入,獲得庫,表,使用者資料等資訊?首先來...