sql二次注入


什么是二次注入?

簡單的說,二次注入是指已存儲(數據庫、文件)的用戶輸入被讀取后再次進入到 SQL 查詢語句中導致的注入。
網站對我們輸入的一些重要的關鍵字進行了轉義,但是這些我們構造的語句已經寫進了數據庫,可以在沒有被轉義的地方使用
可能每一次注入都不構成漏洞,但是如果一起用就可能造成注入。
 

原理:

二次注入需要具備的兩個條件:
(1)用戶向數據庫插入惡意語句(即使后端代碼對語句進行了轉義,如mysql_escape_string、mysql_real_escape_string轉義)
(2)數據庫對自己存儲的數據非常放心,直接取出惡意數據給用戶
 
登錄頁面 新建用戶
數據插進去了
 
登錄
修改密碼
 
修改完后查看下,當前賬號admin'# 並沒修改到密碼 還是原來的123456  倒是把表中另一個admin賬號修改了
 
查看修改密碼頁面的源代碼
傳進來的的語句變成了這樣
$pass變量=傳進來的新密碼  $username 當前用戶 $curr_pass 當前用戶登錄密碼
$sql = "UPDATE users SET PASSWORD='123456789' where username='admin'#' and password='$curr_pass' ";
#把后面的都給注釋了,所以就是修改了admin用戶的密碼為123456789
 
用這條語句把admin改回原來的密碼
update users set password='admin' where username='admin'#' and password=123456789;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM