阿瑟 發表
網路上知名的 隱碼攻擊 (SQL Injection), 今天我們就來掀他的底...
什麼是隱碼攻擊
隱碼攻擊, 英文名字為SQL Injection, 是一種利用輸入SQL語法來對於各種SQL伺服器做資料竊取或是破壞的一種攻擊方式. 一個網站能不能用隱碼攻擊, 與伺服器資料輸入的寫法很大的關係.
一段含有漏洞的語法
Sql = "Select * From 資料表名稱 where name='" &request("name")& "' and password='" &request("password")& "'" if rs.eof=true then response.end end if |
Sql = "Select * From 資料表名稱 where name='name' or 'a'='a' and password='name' or 'a'='a" |
如何修補漏洞
如果您將之前的語法稍微修改...
Sql = "Select * From 資料表名稱 where name='" &request("name")& "'" if rs.eof=true then response.end end if if request("password")<>rs("password") then response.end end if |
結語
小弟昨天上網去逛漏洞程式的來源網站, 發現該網站竟然也有相同的漏洞.
該網站還是網路上有點知名度的程式庫, 由此可見現在網路上有多少網站仍然存在著這個漏洞. 如果大家有發現的話, 應該立刻通知網站管理者, 以免被有心人士利用.
本教學感謝阿德大大提供資料一起研究討論