php之sql注入

先看一下簡單的php登錄代碼,沒有任何過濾,如果登錄成功將跳轉到百度

下面是資料庫連接文件,用到的函數有mysql_connect()(連接資料庫函數),mysql_query()(資料庫查詢函數),mysql_num_rows()(查詢數據行數),mysql_select_db()(資料庫選擇函數)和mysql_close()(mysql關閉函數)。

然後是我的資料庫裡面的東西。

簡單的一個登錄頁面,form表單。

先輸入我裡面的賬號和密碼。

如果使用資料庫裡面的密碼登錄會顯示登錄成功(什麼過濾都沒寫,也沒有什麼md5加密)

如果和資料庫中的不匹配,直接登錄失敗。

於是,問題來了,當你使用「 or 1=1 」時,也會顯示登錄成功。

看看它的sql語句。

or前面的引號跟前面的閉合,從而造成了or 1=1,因為1=1永遠成立,所以語句成功執行。sql注入就是這樣來的。一個簡單的方法就是post和get傳值是使用addslashes()函數,可以簡單的過濾一些字元。

建議學一下sqli-labs,裡面有好多需要學習的,我和大佬已經差了9個月了。。。

可以直接去github上下載講解文件。

參考這個鏈接。Build software better, together

加油學習!


推薦閱讀:

如何對一個網站進行SQL注入攻擊?
問Mac上有哪些好用的測試及檢測工具:?
雲盾定期對雲主機監聽埠做SQL注入攻擊,這是業界的通常做法嗎,有何風險?

TAG:SQL注入 | PHP | MySQL入门 |