OK論壇

 找回密碼
 註冊
查看: 3263|回復: 61

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

[複製鏈接]

105

主題

10

聽眾

2萬

積分

高級會員

小鮭魚 - Salmon

Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

  • 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 [email protected]_Main$, "`pasture_story`" ;
      input [email protected]$ ;
      query_sql "UPDATE " + [email protected]_Main$ + ".`story_chapter` SET `partner` = '" + [email protected]$ + "' 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 人評分積分 現金 積極性 收起 理由
    goddameit + 99 + 99 + 99

    總評分: 積分 + 99  現金 + 99  積極性 + 99   查看全部評分

    回復

    使用道具 舉報

    345

    主題

    3

    聽眾

    4萬

    積分

    高級會員

    Umaru

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

  • 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



    鐵板(腳本源碼已棄置)
    回復

    使用道具 舉報

    73

    主題

    0

    聽眾

    1萬

    積分

    高級會員

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

  • 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 一次只會判斷一個指令, 兩個以上會出現錯誤, 這倒是可以放心。

    這個倒是第一次知道...
    回復

    使用道具 舉報

    103

    主題

    8

    聽眾

    2萬

    積分

    高級會員

    (´・ω・`)

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

  • TA的每日心情
    無聊
    2017-11-9 03:53 PM
  • 簽到天數: 1530 天

    連續簽到: 3 天

    [LV.Master]伴壇終老

    灌水天皇 宣傳大使 在線長老

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

    我來看第二方法的

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

    你可以考慮發一個修改query_sql避免被利用的原碼

    [/url]
    回復

    使用道具 舉報

    404

    主題

    0

    聽眾

    3119

    積分

    中級會員

    Rank: 6Rank: 6

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

    連續簽到: 1 天

    [LV.8]以壇為家I

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

    使用道具 舉報

    20

    主題

    0

    聽眾

    981

    積分

    普通會員

    Rank: 3Rank: 3Rank: 3

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

    連續簽到: 1 天

    [LV.7]常住居民III

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

    使用道具 舉報

    307

    主題

    0

    聽眾

    3959

    積分

    中級會員

    Rank: 6Rank: 6

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

    連續簽到: 2 天

    [LV.7]常住居民III

    發表於 2013-9-25 20:14:17 |顯示全部樓層
    之前试过这样被黑,从此都不敢INPUT了。
    這個人很懶,什麼都沒留下
    回復

    使用道具 舉報

    頭像被屏蔽

    11

    主題

    0

    聽眾

    -10

    積分

    乞丐

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

    連續簽到: 12 天

    [LV.6]常住居民II

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

    使用道具 舉報

    190

    主題

    0

    聽眾

    1萬

    積分

    高級會員

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

  • TA的每日心情
    擦汗
    15 小時前
  • 簽到天數: 2086 天

    連續簽到: 7 天

    [LV.Master]伴壇終老

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

    使用道具 舉報

    105

    主題

    10

    聽眾

    2萬

    積分

    高級會員

    小鮭魚 - Salmon

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

  • 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指令都不能用

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

    回復

    使用道具 舉報

    190

    主題

    0

    聽眾

    1萬

    積分

    高級會員

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

  • TA的每日心情
    擦汗
    15 小時前
  • 簽到天數: 2086 天

    連續簽到: 7 天

    [LV.Master]伴壇終老

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

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

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

    使用道具 舉報

    105

    主題

    10

    聽眾

    2萬

    積分

    高級會員

    小鮭魚 - Salmon

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

  • 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.

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

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

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

    回復

    使用道具 舉報

    11

    主題

    0

    聽眾

    -83

    積分

    乞丐

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

    連續簽到: 6 天

    [LV.4]偶爾看看III

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

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

    使用道具 舉報

    169

    主題

    0

    聽眾

    1070

    積分

    普通會員

    Rank: 3Rank: 3Rank: 3

  • TA的每日心情

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

    連續簽到: 4 天

    [LV.6]常住居民II

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

    使用道具 舉報

    0

    主題

    0

    聽眾

    199

    積分

    初級會員

    Rank: 1

    該用戶從未簽到

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

    使用道具 舉報

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

    手機版|Archiver|OK討論區  

    GMT+8, 2017-11-22 04:59 PM , Processed in 0.109024 second(s), 34 queries , Gzip On.

    Powered by Discuz! X2.5

    © 2001-2012 Comsenz Inc.

    回頂部