sql注入主要分為普通的sql注入,還有盲注
這一篇主要是記錄普通的sql注入
sql注入的主要流程:
1.尋找注入點/判斷該表單是否可注入:
主要運用的方法是,構造錯誤的語句(在正常輸入的后面加上如單引號等敏感符號) 如:1’ ,1#等 同時,注入類型分為三類,數字類,字符類,還有如like%%等搜索函數 根據返回的結果進行判斷是普通的sql注入還是盲注。
2.找到注入點之后,利用order by 猜解字段個數
若為數字類型注入:直接在后面跟上order by 數字即可 若為字符類型注入:須在order by 后加上注釋符號# 利用order by 猜解流程,以數字型為例:假如
數字 order by 1 // 通過
數字 order by 2 // 通過
數字 order by 3 // 通過
數字 order by 4 // 不通過
則該sql語句共查詢了3個字段
由此,如果沒有過濾掉union,我們就可以利用union來構造sql語句來查詢。
3. 利用union構造sql語句來獲取數據庫名
主要函數 database() 還是以上面的為例,假設我們已經確定該sql語句查詢了3個字段: 那我們先利用union構造一條select語句確定字段的順序1 union select 1,2,3,4
那么字段的順序 就是查詢結果對應后面的順序.
由此我們知道了字段的查詢順序。
接着,將被顯示出來數字對應的字段更改為database()
以2為例
1 union select 1,database(),3,4
那么原來2的地方就會返回當前的數據庫的名字。
4.通過mysql的information_schema庫來查詢對應的表名
select 1,table_name,3,4 from information_schema.tables where table_schema=database
5通過對應的表名來獲取字段名
select 1,column_name from information_schema.columns where table_name = table_name
6通過字段和表來獲取數據
由此,整個sql注入的流程就結束了轉載請注明來自:LucyTime 原文地址:https://www.cnblogs.com/LucyTime/p/9392649.html
