一.前言
本章節我們來講解一下sql注入的分類,主要分為四類,數字型、字符型、搜索型、xx型。
二.數字型
數字型注入的時候,是不需要考慮單\雙引號閉合問題的,因為sql語句中的數字是不需要用引號括起來的,如下
mysql> select username,email from member where id=1;
mysql> select username,email from member where id=1 or 1=1;
1 or 1=1 #
注入成功,看一下后臺代碼
這里并沒有加上引號,所以我們不需要加上引號。
注意:我們判斷是否為數字型注入,不是通過前端頁面上看到的數據是數字就判斷它是數字型注入,也 有可能是偽數字型,因為后臺處理的時候可能是將前端傳遞過來的數字通過引號括起來了,也就是作為 了字符串來處理,所以要多嘗試。
三.字符型
字符串類型的輸入方式
我們得先檢查phpstudy的魔術符號是否開啟了,這是phpstudy的一個安全機制,我們關閉它
xxx' or 1=1 #
這個我們前面看過源碼了,這里就不再看了。
四.搜索型
打開pikachu平臺,在SQL-Inject下選擇搜索型注入,然后隨意輸入一個字母,能看到匹配出了對應的信 息,也就是模糊搜索,用到了%通配符。按照SQL的模糊查詢命令 select * from 表名 where 字段名like '%(對應值)%'; ,發現可以按照之前的思路來實現萬能語句的拼接。
比如下面sql語句中的 like %vince% 的意思是:xxvincexx、vincexx、xxvince等數據都能匹配到。
%xxxx%' or 1=1 #
這個就也不給大家看源碼啦,因為和字符型都差不多啦,主要就是閉合括號啦。
五.xx型
XX型是由于SQL語句拼接方式不同,注入語句如下:
mysql> select * from member where username=('vince') ;
mysql> select * from member where username=('xx') or 1=1;
所以我們主要就是要左邊括號給閉合
XX') or 1=1#
六.總結
本章節講解了不同類型的sql注入,但是大家仔細發現就能知道,當然還有一個json類型的沒和大家介紹,這個其實都大差不差,主要是看里面的值是啥類型的啦!后面會持續更新,期待大家的點贊關注加收藏