php之sql注入
02-02
先看一下簡單的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注入攻擊,這是業界的通常做法嗎,有何風險?