- 資訊首頁(yè) > 網(wǎng)絡(luò )安全 >
- MySQL中SQL的單字節注入與寬字節注入的區別
這篇文章主要講解了“中SQL的單字節注入與寬字節注入的區別”,文中的講解內容簡(jiǎn)單清晰,易于學(xué)習與理解,下面請大家跟著(zhù)小編的思路慢慢深入,一起來(lái)研究和學(xué)習“MySQL中SQL的單字節注入與寬字節注入的區別”吧!
一、單字節SQL注入
MYSQL的SQL注入已經(jīng)由來(lái)已久,以下是普遍采用的注入步驟:
1、在GET參數上加一個(gè)/*或者#(mysql專(zhuān)有的注釋?zhuān)?,判?a href='http://wap.friendlycc.com.cn/database/mysql/' target='_blank'>數據庫是否是mysql,比如:
http://www.xxx.com.cn/article.php?id=1607 and 1=1/*
2、猜解某表的字段數,從order by 1一直更改到頁(yè)面出錯為止,就可以得到該表的字段數
注入URL:http://www.xxx.com.cn/article.php?id=1607 or 1=1 order by 10#
對應的SQL:
3、使用該表和用戶(hù)表進(jìn)行關(guān)聯(lián)查詢(xún),在文章列表里就可以看到用戶(hù)名和密碼了。當也要猜解用戶(hù)表的表名和用戶(hù)名、密碼的字段名,比如上一步得到的字段數是5:
注入的URL:http://www.xxx.com.cn/article.php?id=1607 or 1=1 union select username,password,1,2,3 from user
對應的SQL:
這樣就可以在界面上看到用戶(hù)名和密碼了。
解決方法:
過(guò)濾數據:這并不是羅唆。在合適的地方使用良好的數據過(guò)濾,可以減小多數安全隱患,甚至可以消除其中的一部分。
將數據用括號包含:如果你的數據庫允許(MySQL 允許),在 SQL 語(yǔ)句中,不論什么類(lèi)型的數據都用單引號包含起來(lái)。
轉義數據:一些合法的數據可能在無(wú)意中破壞 SQL 語(yǔ)句本身的格式。使用 mysql_escape_string() 或者所使用數據庫提供的轉移函數。如果沒(méi)有提供這樣的函數,addslashes() 也是不錯的***選擇。
二、寬字節注入
寬字節注入也是在最近的項目中發(fā)現的問(wèn)題,大家都知道%df’ 被PHP轉義(開(kāi)啟GPC、用addslashes函數,或者icov等),單引號被加上反斜杠\,變成了 %df\’,其中\的十六進(jìn)制是 %5C ,那么現在 %df\’ = %df%5c%27,如果程序的默認字符集是GBK等寬字節字符集,則MYSQL用GBK的編碼時(shí),會(huì )認為 %df%5c 是一個(gè)寬字符,也就是縗’,也就是說(shuō):%df\’ = %df%5c%27=縗’,有了單引號就好注入了。比如:
則通過(guò)以下注入即可:
http://www.xxx.com/login.php?user=%df’%20or%201=1%20limit%201,1%23&pass=
對應的SQL是:
解決方法:就是在初始化連接和字符集之后,使用SET character_set_client=binary來(lái)設定客戶(hù)端的字符集是二進(jìn)制的。如:
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自互聯(lián)網(wǎng)轉載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權請聯(lián)系QQ:712375056 進(jìn)行舉報,并提供相關(guān)證據,一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容。
Copyright ? 2009-2021 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 珠海市特網(wǎng)科技有限公司 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站