[教學] 小風的資安科普-SQL injection

看板CyberSecure作者 (前端攻城師)時間5年前 (2019/05/11 11:08), 5年前編輯推噓16(16011)
留言27則, 10人參與, 4年前最新討論串1/1
一.前言 SQL injection 是一種在網路上經典常見的攻擊手法,不論是在CTF中,還是真實的 網路攻防戰中都可以見到其身影。 故本文將介紹這種古老又實用的攻擊手法給想要學習資訊安全的板友了解其原理以及 運作方式。 期待可以為一些沒有資安經驗的板友們開啟一扇通往資訊安全領域的大門。 二.概述 1.甚麼是 SQL injection ? SQL injection 是一種將惡意的程式碼注入資料庫搜尋語法的資安技術。 2.SQL injection 的危害是甚麼? 藉由 SQL injection 黑客可以修改資料庫中的內容,非法越權或者之後進行更 進一步的攻擊手法。 3.如何進行 SQL injection? 找到存在漏洞的SQL注入點注入,例如:網址列的get使用處,帳號密碼輸入處, 以及其他各種會將資料送到資料庫的位置。 三.原理 在資料庫中,我們會使用搜尋語法進行搜尋。 例如:"SELECT * FROM user_data WHERE account ='$account' AND pwd = '$pwd' " 上例中存在兩個來自使用者的變數,分別是帳號($account)以及密碼($pwd), 在程式正常運行的時候,我們會尋找對應帳號密碼皆相符的資料,將其輸出。 但假設有惡意使用者輸入了一些非法字元就會破壞這段搜尋語法。 例如: $account = "' OR 1=1 -- "; $pwd = "QAQ"; 此時我們的搜尋語法會變成 "SELECT * FROM user_data WHERE account ='' OR 1=1 -- ' AND pwd = 'QAQ' " 因為account遭到兩個單引號閉合,並且 -- 在SQL中是註解的意思,因此在進入資料 庫後,該程式碼會轉成以下: "SELECT * FROM user_data WHERE account ='' OR 1=1 " 也就是說關於密碼確認的欄位消失了!此時惡意使用者將可以非法登入! 四.範例 https://imgur.com/dQ3CYRm.jpg
如上圖我們在登入欄位輸入了帳號admin,並且於其後插入惡意代碼。 https://imgur.com/FzZJ3Vn.jpg
此時我們可以看到我們成功的登入了admin的帳號! 五.案例 建中蘇柏榕曾經使用SQL injection 駭入我國大考中心。 (資訊來源:http://www.epochtimes.com/b5/5/7/26/n997634.htm) 六.防禦方式 要防禦SQL injection 首先要注意一個基本原則,所有來自使用者的資訊皆不可信! 我們可以藉由以下幾種方式防禦SQL injection : 1.過濾使用者輸入,將非法字元過濾掉。 但此方法因為黑客們有著各種創意,所以存在著風險。 2.建立白名單,只有符合的資料可以使用。 此法最安全,但是可以適用的範圍最小,不利於大量使用。 3.預處理(prepare) PHP中的PDO套件可以針對參數進行綁定,以此避免SQL injection,此方法是目 前最主流的方法。 (PDO官方說明:https://www.php.net/manual/en/book.pdo.php) 七.後話 SQL injection隨著時間的演進,不斷的進化著,除了最基礎的這些外,還有其他應 用,譬如基於時間的盲注(time based blind) 此外也可能被當成更進一步攻擊,譬如遠程代碼執行(RCE)的跳板。 因此值得各位學習資安的人一再研究學習。 發表此文,希望可以與各位舊雨新知們一同學習,一同進步,為台灣的資訊安全貢獻 一份心力。 共勉之。 By st1009 -- 壁河山攻守 爭成敗悟道 許銀川 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.164.88.106 ※ 文章網址: https://www.ptt.cc/bbs/CyberSecure/M.1557544116.A.F0B.html

05/11 19:34, 5年前 , 1F
05/11 19:34, 1F

05/11 19:57, 5年前 , 2F
推推厲害
05/11 19:57, 2F

05/11 20:21, 5年前 , 3F
05/11 20:21, 3F

05/12 13:05, 5年前 , 4F
可以科普鑑識相關的嗎~~
05/12 13:05, 4F

05/12 13:14, 5年前 , 5F
我個人比較會CTF類的攻防...鑑識不是很了解QQ
05/12 13:14, 5F

05/12 13:26, 5年前 , 6F
哇那請問自己在網路上做CTF常常覺得做完沒有在現實世
05/12 13:26, 6F

05/12 13:26, 5年前 , 7F
界實行的感覺....感覺最近入門只會在線上的ctf練題目
05/12 13:26, 7F

05/12 13:26, 5年前 , 8F
而已,感覺沒什麼真實感,請問可以怎麼解決
05/12 13:26, 8F

05/12 13:45, 5年前 , 9F
比較黑暗的作法就是隨機去找攻擊目標練習,不過不建議,如
05/12 13:45, 9F

05/12 13:46, 5年前 , 10F
果真要這樣,請記得匿蹤
05/12 13:46, 10F

05/12 13:47, 5年前 , 11F
此外一些公司會有一些資安懸賞計劃,可以接來玩看看
05/12 13:47, 11F

05/12 13:47, 5年前 , 12F
譬如FB,如果你可以找到他的資安漏洞有錢拿,可以學張啟元
05/12 13:47, 12F

05/12 13:49, 5年前 , 13F
以上是攻擊,防禦的部份可能就打打看自己的系統有沒有漏洞
05/12 13:49, 13F

05/12 13:49, 5年前 , 14F
是說其實我個人不是很在乎真實感,我都當遊戲玩的:P
05/12 13:49, 14F

05/12 16:00, 5年前 , 15F
05/12 16:00, 15F

05/13 11:34, 5年前 , 16F
05/13 11:34, 16F
※ 編輯: st1009 (1.163.139.75), 05/14/2019 23:31:16

05/18 13:55, 5年前 , 17F
謝謝分享
05/18 13:55, 17F

05/18 13:56, 5年前 , 18F
有人可以分享科普buffer overflow或是Private infor
05/18 13:56, 18F

05/18 13:56, 5年前 , 19F
mation retrieval嗎?
05/18 13:56, 19F

05/18 18:42, 5年前 , 20F
有點想寫不過我還太菜
05/18 18:42, 20F

05/22 10:30, 5年前 , 21F
有人能分享鑑識相關的嗎?感謝
05/22 10:30, 21F

05/26 21:11, 4年前 , 22F
可以講一下平常業界滲透的工作內容嗎
05/26 21:11, 22F

05/27 00:51, 4年前 , 23F
分享樓上提的東西要注意NDA唷~!! 0__0; ((抖抖
05/27 00:51, 23F

05/28 00:35, 4年前 , 24F
這樣說來,我碰過的東西還真都有簽NDA...
05/28 00:35, 24F

05/28 03:12, 4年前 , 25F
囧.. 因為樓樓樓上特別說"業界".. 所以提醒大家注意一下~!
05/28 03:12, 25F

05/28 14:09, 4年前 , 26F
抱歉抱歉,難怪我網路上不怎麼查的到XD....
05/28 14:09, 26F

05/28 22:42, 4年前 , 27F
不用抱歉啦..也不是不能分享, 只是貼出前要review而已..
05/28 22:42, 27F
文章代碼(AID): #1SrZoqyB (CyberSecure)