1. 程式人生 > >【重溫基礎的SQL注入】圖文詳細解說,java後臺用mybatis框架的SQL注入漏洞和效果展示,以及預防

【重溫基礎的SQL注入】圖文詳細解說,java後臺用mybatis框架的SQL注入漏洞和效果展示,以及預防

1.   SQL注入

1.1原因描述

使用者名稱和密碼的引數是直接引用,可用拼接的方式。

1.2        拼接方式

' or '1'='1  (這個可以作為參考原型,變種很多,百度都有)


主要是拼接成這樣的SQL:


效果如此:即使沒有拼接查詢張三,依然能查到資料庫的張三,因為 'or' 後面 1=1永恆成立。

具體操作時分號要靈活使用,


例如圖一中,password沒加分號,那麼password中的 or 1=1 則不需要分號。

後臺的分號結構都不是固定的,想辦法拼湊,有的不加分號也可以。可進行多次嘗試。

1.3        避免方法

Mybatis中,將去掉圖一中的分號“ ' ”,並且把’$’ 改為 ’#’,讓引數作為值插入,而不是字串拼接。

1.4        補充

此方法還和後臺有關係:

上面的頁面能登入成功並且進入,因為資料庫只有一條資料,如果有多條資料

後臺頁面如下:

此時如果有兩條資料,就會報錯。

當然,如果有已知的使用者名稱,並且使用者名稱是資料庫存在並且唯一,而密碼進行sql注入,就不會出現這種情況。。

或者,如果後臺開發人員粗心這麼寫:


不管他資料庫有幾條資料,使用者名稱和密碼都可以隨便寫,都可以輕鬆繞過啦。。。

PS:  SQL注入是幾年前非常流行的漏洞,現在已經非常非常少見,不排除運氣好,能遇到不知名的小網站貓進去。這裡僅作為安全基礎知識,熟悉一下。