OK論壇

 找回密碼
 註冊
查看: 11183|回復: 67

[知識] SQL 資料隱碼攻擊防範

[複製鏈接]
  • TA的每日心情

    2017-1-18 12:17 AM
  • 簽到天數: 512 天

    連續簽到: 1 天

    [LV.9]以壇為家II

    發表於 2013-9-11 16:17:47 | 顯示全部樓層 |閱讀模式
    本帖最後由 grass0916 於 2014-9-12 03:51 PM 編輯

    今天談談防範 SQL資料隱碼攻擊( SQL injection ), 中國大陸稱作 SQL注入攻擊,

    是在給使用者輸入字串資料中夾帶著資料庫指令, 這樣會使系統誤判並使伺服器允許執行。



    有幾項是我們必須檢查 使用者輸入的字串中, 是否有以下字元 : (這裡適用 mySQL)

    含有字元
    SQL 中其意義
    ;
    分號
    查詢分隔符號
    '
    單引號
    字元資料字串分隔符號
    #(空格)
    井字號後面再接 space
    註解分隔符號 (其後字元無效)
    --(空格)
    雙減號後面再接 space
    註解分隔符號 (其後字元無效)
    /* ... */
    斜線米字
    註解分隔符號 ( /* 和 */ 期間字元無效 )



    初階的腳本撰寫者學習到了 SQL 相關指令時, 會忽略到這了一部分,

    我們直接看以下例子 :
      set $@DB_Main$, "`pasture_story`" ;
      input $@partner$ ;
      query_sql "UPDATE " + $@DB_Main$ + ".`story_chapter` SET `partner` = '" + $@partner$ + "' WHERE `char_id` = " + getcharid(0) ;



    使用了 腳本指令 input, 且變數為字串型別, 使用者角度會看到以下視窗。



    正常情況下, 這時資料庫的資訊會變成以下。





    但是如果輸入的字串為以下內容。
    '-- (注意, 雙減號後面還有一個空格)

    這樣我們來看看實際執行指令。

    query_sql "UPDATE `pasture_story`.`story_chapter` SET `partner` = ''-- ' WHERE `char_id` = 150019" ;

    雙減號後面被註解, 亦即無效果, 執行語法亦同於。
    query_sql "UPDATE `pasture_story`.`story_chapter` SET `partner` = ''" ;

    少了 WHERE 的條件判斷, 我們看看結果。



    媽阿 ~~ 我被人家黑了。

    所以了, 字串不做檢查直接執行 SQL 指令我們用精闢的兩個字來作結論。

    找死



    在外面的系統如果輸入以下內容, 後果是什麼可想而知, 資料庫直接 Say byebye。
    ' ; DROP TABLE `pasture_story` --

    不過 rA, 設計成使用 query_sql 一次只會判斷一個指令, 兩個以上會出現錯誤, 這倒是可以放心。



    解決方法有兩種 :

    搭配右手邊連結 點我 一同使用。

    兩種函數其實可以合併, 特意分開想讓大家看其中不同之處。

    1. 完全杜絕 (只要不合法就不允許執行)
    遊客,如果您要查看本帖隱藏內容請回復


    2. 改變形式 (將不合法的字元以跳脫字元 '\' 使其無效化)
    遊客,如果您要查看本帖隱藏內容請回復


    評分

    參與人數 1積分 +99 現金 +99 積極性 +99 收起 理由
    goddameit + 99 + 99 + 99

    查看全部評分

    回復

    使用道具 舉報

  • TA的每日心情
    開心
    2012-10-20 12:31 AM
  • 簽到天數: 305 天

    連續簽到: 94 天

    [LV.8]以壇為家I

    發表於 2013-9-11 16:49:49 | 顯示全部樓層
    本帖最後由 rgrg1234 於 2013-9-11 05:00 PM 編輯

    啊  這丟出來就不好玩了啊
    -
    遊客,本帖隱藏的內容需要積分高於 17000 才可瀏覽,您當前積分為 0



    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    擦汗
    2015-10-1 03:50 PM
  • 簽到天數: 416 天

    連續簽到: 1 天

    [LV.9]以壇為家II

    發表於 2013-9-11 17:51:10 | 顯示全部樓層
    本帖最後由 Karas鴉 於 2013-9-11 05:54 PM 編輯

    伺服器內防範算簡單的
    註冊頁上就不只 sql injection 了...
    ---------------
    不過 rA, 設計成使用 query_sql 一次只會判斷一個指令, 兩個以上會出現錯誤, 這倒是可以放心。

    這個倒是第一次知道...
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    無聊
    2023-11-5 12:14 PM
  • 簽到天數: 2233 天

    連續簽到: 1 天

    [LV.Master]伴壇終老

    發表於 2013-9-11 18:52:23 | 顯示全部樓層
    本帖最後由 IDUN-2 於 2013-9-11 07:11 PM 編輯

    我來看第二方法的

    把使用者GRANT關閉不能避免?

    你可以考慮發一個修改query_sql避免被利用的原碼
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    奮斗
    2015-2-19 03:11 AM
  • 簽到天數: 332 天

    連續簽到: 1 天

    [LV.8]以壇為家I

    發表於 2013-9-11 19:15:34 | 顯示全部樓層
    第二個方法我比較好奇  怎樣才能改變形式
    使用SQL  開機有好處也有壞處阿  .....
    TXT 不錯  但是  很多SQL的腳本無法使用 ....
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    開心
    2016-1-10 01:07 AM
  • 簽到天數: 168 天

    連續簽到: 1 天

    [LV.7]常住居民III

    發表於 2013-9-11 22:16:21 | 顯示全部樓層
    原來input 腳本指令
    搭配SQL語法
    可以做出這麼可怕的事
    先來防範一下好了
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    開心
    2014-6-12 04:58 PM
  • 簽到天數: 202 天

    連續簽到: 2 天

    [LV.7]常住居民III

    發表於 2013-9-25 20:14:17 | 顯示全部樓層
    之前试过这样被黑,从此都不敢INPUT了。
    回復 支持 反對

    使用道具 舉報

    頭像被屏蔽
  • TA的每日心情
    奮斗
    2014-2-27 01:41 AM
  • 簽到天數: 100 天

    連續簽到: 12 天

    [LV.6]常住居民II

    發表於 2013-9-25 20:45:33 | 顯示全部樓層
    提示: 該帖被管理員或版主屏蔽
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    擦汗
    2024-1-19 12:37 AM
  • 簽到天數: 2354 天

    連續簽到: 1 天

    [LV.Master]伴壇終老

    發表於 2013-9-29 04:51:57 | 顯示全部樓層
    這時忽然會覺得用TXT開機的話
    也許就不用擔心這個攻擊了XD"
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情

    2017-1-18 12:17 AM
  • 簽到天數: 512 天

    連續簽到: 1 天

    [LV.9]以壇為家II

     樓主| 發表於 2013-9-29 05:28:16 | 顯示全部樓層
    ㄚ聯 發表於 2013-9-29 04:51 AM
    這時忽然會覺得用TXT開機的話
    也許就不用擔心這個攻擊了XD"

    TXT 連SQL指令都不能用

    不知道你要高興什麼 =_=

    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    擦汗
    2024-1-19 12:37 AM
  • 簽到天數: 2354 天

    連續簽到: 1 天

    [LV.Master]伴壇終老

    發表於 2013-9-29 18:07:14 | 顯示全部樓層
    grass0916 發表於 2013-9-29 05:28 AM
    TXT 連SQL指令都不能用

    不知道你要高興什麼 =_=

    你是不是誤會的我意思?
    還是你解讀錯誤了?
    我純粹只是想說
    若用TXT架設的話
    就不用腳本被放隱碼攻擊了!!!
    (你的口氣根本有點......)
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情

    2017-1-18 12:17 AM
  • 簽到天數: 512 天

    連續簽到: 1 天

    [LV.9]以壇為家II

     樓主| 發表於 2013-9-29 20:33:10 | 顯示全部樓層
    ㄚ聯 發表於 2013-9-29 06:07 PM
    你是不是誤會的我意思?
    還是你解讀錯誤了?
    我純粹只是想說

    別懷疑我口氣就是有點 XXX,

    因為 TXT 是被時代淘汰的產物,

    你拿了一個漏洞更多更好入侵的系統跟

    更早出生且為一個完整公司做開發的第三方 SQL 做比較味,

    個人覺得你的論點已率先站不住腳,

    如有不適 I'm so sorry.

    我很喜歡甲骨文這個公司,

    你的表態讓我覺得你在低估他,

    這一切不過是第二階端開發者的失誤罷了。

    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    無聊
    2013-12-8 01:23 PM
  • 簽到天數: 16 天

    連續簽到: 6 天

    [LV.4]偶爾看看III

    發表於 2013-11-2 11:03:55 | 顯示全部樓層
    sql injection...
    好專業阿XDD

    小弟初碰資安領域,也只看得懂一點
    不知是否所有的人都能懂......
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情

    2015-1-6 01:23 AM
  • 簽到天數: 76 天

    連續簽到: 4 天

    [LV.6]常住居民II

    發表於 2013-11-2 19:44:03 | 顯示全部樓層
    這是個嚴重的問題...來看看如何防範
    回復 支持 反對

    使用道具 舉報

    該用戶從未簽到

    發表於 2014-2-17 19:20:08 | 顯示全部樓層
    最近在學習如何架設伺服器,看到這篇文章的提醒非常感謝你的分享
    先回復來看如何完全杜絕了,謝謝你
    回復 支持 反對

    使用道具 舉報

    您需要登錄後才可以回帖 登錄 | 註冊

    本版積分規則

    Archiver|手機版|小黑屋|OK討論區

    GMT+8, 2024-5-10 09:37 PM , Processed in 0.059192 second(s), 23 queries , Gzip On.

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回復 返回頂部 返回列表