萬能密碼:‘or 1=1-- 實戰SQL隱碼攻擊,秒破後臺

2020-10-25 12:00:55

主要是沒有對登入密碼的字串進行引數化和過濾,所以導致網站可以直接用「萬能密碼」進行突破登入

僅供學習交流
  • 這是某同學做的網站,今天無聊開啟了,並幫他進行測試一下

看到這個後臺,感覺做的還是不錯的,首先SQL隱碼攻擊一般這種「萬能密碼」在99%的網站都是沒有用的了,因為幾乎所有釋出到網路上的網站都是有進行安全考慮的,像這種學生的學術作品的話,一般不會考慮那麼多,所以直接使用萬能密碼進行登入後臺

萬能密碼:'or 1=1--

使用者名稱隨便輸入,密碼填寫這個,輸入驗證碼,ok,大功告成

直接就登入成功了,不論他設定的是什麼密碼,都可以直接登入進去

  • 那麼這是為什麼呢?

一般沒有進行SQL語句引數化的登入語句是這樣的

Select * From 使用者表 Where UserName=xxx and Password=xxx

然後判斷返回的行數,如果有返回行,證明賬號和密碼是正確的,即登入成功,而這樣的語句的話,就很容易被注入程式碼,也就是在登陸的SQL語句中新增一段程式碼,例如直接在密碼框輸入【’or 1=1–】,那麼它的登入語句就會變成

Select * From 使用者表 Where UserName=xxx and Password=xxx or 1=1--

or是或者的意思,也就是Password=xxx的時候可以登入,也可以是1=1的時候可以登入,要知道,1永遠等於1,所以登入條件永遠成立,所以永遠可以登入。

而將SQL語句進行分解引數化,就可以很好的解決這個問題,用到SQL的地方,儘量都將SQL進行引數化和符號過濾。

 

原文自:熊沐風同學

原文地址:http://www.zejang.cn/archives/90