1. 程式人生 > >sql注入入門

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注入就是通過類似的手段來破壞資料