MySQL約束攻擊的原理和復(fù)現(xiàn)方式
MySQL約束攻擊的原理和復(fù)現(xiàn)
在MySQL數(shù)據(jù)庫中,數(shù)據(jù)是有字符長度限制的。
對于下面這個(gè)數(shù)據(jù)庫:
username和password的限制都是設(shè)置為15個(gè)字符。
當(dāng)嘗試注冊一個(gè)超過15字的字符串時(shí),系統(tǒng)就會(huì)報(bào)錯(cuò)。
這是由于在MySQL環(huán)境變量sql_mode中添加了STRICT_TRANS_TABLES字樣,規(guī)定了嚴(yán)格模式。
但如果有些數(shù)據(jù)庫沒有設(shè)置嚴(yán)格模式,系統(tǒng)就會(huì)對輸入的非法字符串進(jìn)行轉(zhuǎn)換,
出現(xiàn)了SQL約束攻擊
在SQL注冊的時(shí)候,是不能夠注冊已經(jīng)存在的用戶名的(即使在后面加空格也不可以),但是可以考慮創(chuàng)建一個(gè)名字叫‘admin 1’的超長字符串用戶,在SQL比對時(shí),它顯然是和admin不同的(因?yàn)槟┪灿幸粋€(gè)1,所以空格是有效的),但是在非嚴(yán)格模式下,SQL會(huì)去掉后面多余的字符,將“admin ”注冊到用戶中,
數(shù)據(jù)庫就變成了這樣:
發(fā)現(xiàn)數(shù)據(jù)庫中出現(xiàn)了兩個(gè)admin,然后再使用admin、mypass登陸,由于比對的時(shí)候,末尾的空格是被忽略掉的,所以就成功登入了admin。
總結(jié)
如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
相關(guān)文章
win2003 安裝2個(gè)mysql實(shí)例做主從同步服務(wù)配置
注意的就是路徑的正確書寫。然后在my.ini的配置中,server_id必須保持唯一性。port避免使用3306,服務(wù)名稱和mysql5.1不一樣即可。2011-05-05centos 7系統(tǒng)下編譯安裝 mysql5.7教程
因?yàn)镸ysql5.7的更新特性還是非常多,所以這篇文章就給大家介紹以下在centos上面編譯安裝mysql5.7的教程。本文給大家介紹的步驟還是相對來說比較詳細(xì)的,相信對大家具有一定的參考借鑒價(jià)值,有需要的朋友們可以參考借鑒,下面來一起看看吧。2016-11-11用shell寫一個(gè)mysql數(shù)據(jù)備份腳本
本篇文章教給大家用shell寫一個(gè)mysql數(shù)據(jù)備份腳本,這是一個(gè)簡單備份MYSQL數(shù)據(jù)庫的方法,一起跟著學(xué)習(xí)下吧。2017-12-12MySQL數(shù)據(jù)庫索引原理及優(yōu)化策略
MySQL數(shù)據(jù)庫索引是一種數(shù)據(jù)結(jié)構(gòu),用于提高數(shù)據(jù)查詢的效率,加快數(shù)據(jù)檢索的速度。索引基于樹結(jié)構(gòu)實(shí)現(xiàn),可以通過B+樹等算法來優(yōu)化索引效率。MySQL中常見的索引類型包括主鍵索引、唯一索引、普通索引、全文索引等2023-04-04