sql注入入門
參考文章:https://www.cnblogs.com/sdya/p/4568548.html
正常的語句
select * from users where username='marcofly' and password=md5('test')
異常操作:
在使用者名稱輸入框中輸入:’ or 1=1#,密碼隨便輸入,這時候的合成後的SQL查詢語句為:
select * from users where username='' or 1=1#' and password=md5('')
語義分析:“#”在mysql中是註釋符,這樣井號後面的內容將被mysql視為註釋內容,這樣就不會去執行了,換句話說,以下的兩句sql語句等價:
select * from users where username='' or 1=1#' and password=md5('')
等價於
select * from users where username='' or 1=1
SQL注入採用的' OR 1=1 # 是什麼意思呢?
最後一個#號有什麼意義呢?
SELECT * FROM test WHERE name='' OR 1=1 #' AND age='20'
這後面寫的 #' 是什麼意思呢? 求指教
# 可以註釋掉後面的一行SQL程式碼
相當於去掉了一個where條件
MySQL 註釋, 過濾掉後面的SQL語句,使其不起作用
因為1=1永遠是都是成立的,即where子句總是為真,將該sql進一步簡化之後,等價於如下select語句:
select * from users 沒錯,該sql語句的作用是檢索users表中的所有欄位
小技巧:一個經構造後的sql語句竟有如此可怕的破壞力,相信你看到這後,開始對sql注入有了一個理性的認識了吧~
有漏洞的指令碼才有機會給你攻擊,比如一個帶引數的刪除指令碼a.asp?action=del&id=2你可以改為a.asp?action=del&id=2 or 1這樣就有可能刪除全部資料------sql注入就是通過類似的手段來破壞資料