1. <nobr id="easjo"><address id="easjo"></address></nobr>

      <track id="easjo"><source id="easjo"></source></track>
      1. 
        

      2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
      3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>
          貴州做網站公司
          貴州做網站公司~專業!靠譜!
          10年網站模板開發經驗,熟悉國內外開源網站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          利用SQL注入進行爆庫!【進階】

          來源:互聯網轉載 時間:2024-10-29 01:51:28

          這一篇文章如何將MySQL數據庫爆庫?

          上一篇【超級蜘蛛池之何謂為SQL注入?】介紹了SQL注入的基本原理和實驗方法!

          如果作為一名黑客,根本無法知道系統中有哪些表,表中有哪些字段,那如何將數據庫的內容竊取出來呢?

          答案就是MySQL數據有一個元數據庫,它會描述整個MySQL服務器有哪些數據庫,每個數據有哪些表,每個表有哪些字段,這就相當于把自家房子有什么寶貝統統告訴別人了。

          那這個元數據庫就一個根,只要抓住了這根據,沿著:元數據庫 -> 數據庫列表->表列表->字段列表->表內容

          這個樹狀分層的檢索順序,就可以將整個數據庫內容全部竊取出來。

          一、元數據庫在哪

          剛才談到MySQL里面有個元數據庫,但它在藏在哪里呢?別急,請登錄MySQL數據庫,并運行show databases;命令,就可以獲取所有數據庫列表,如下圖所示:

          圖片中標紅色的數據庫information_schema就是元數據庫,里面應用盡有,可以盡情開拓處女地。

          進入information_schema數據庫,看看里面有哪些數據表,使用如下命令:

          我們所說的根就在SCHEMATA表,它里面描述了整個MySQL 下所有數據庫。

          然后再利用TABLES表,則可以看到數據下的表名,再利用COLUMNS表,則可以看到每個表下的字段名。下面依次展示如何查看這些數據。

          二、查看所有數據庫

          SCHEMATA表描述所有數據庫信息,只需標準的select語句:

          select * FROM information_schema.SCHEMATA

          即可將該表的內容全部顯示出來:

          圖中SCHEMA_NAME字段為數據庫名,從查詢結果可以知該MySQL服務器有5個數據庫。

          請注意,從這里開始不再入進入某個數據庫之后再訪問表,而是采用<數據庫名>.<表名>的標準格式來訪問某個數據庫下的表。上述的information_schema.SCHEMATA表示查詢information_schema數據庫下的 SCHEMATA表。

          三、查看數據表

          有了數據庫列表,就可以進一步查看某個數據庫下所有表(當前也可以查看所有數據庫下的所有表)。比如查看lyt_test數據庫下的所有表,使用SQL語句:

          select TABLE_SCHEMA, TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'lyt_test'

          查詢結果如下圖所示:

          TABLE_NAME表示表名,左列TABLE_SCHEMA為數據庫名,由于lyt_test數據庫下只有accounts這個表,所以輸出結果只有一列。

          四、查看表中的所有字段

          然后使用COLUMNS表可以查詢表的所有字段信息,使用下面SQL語句可查詢accounts表的所有字段名和類型:

          select TABLE_NAME, COLUMN_NAME, DATA_TYPE FROM information_schema.COLUMNS WHERE TABLE_NAME = 'accounts'

          查詢出accounts表所有字段和類型信息如下圖所示:

          五、查看表中的所有記錄

          查看accounts表中的內容更是小菜一碟了,學過數據庫的都知道SQL寫成下面這樣:select * FROM lyt_test.accounts

          那么如何利用SQL注入來竊取整個數據庫呢?,這就是要尋找的支點。

          還記得上篇文章介紹的實驗嗎?利用SQL注入技術,可以將userinfo表中的所有數據都竊取出來。但該SQL能注入的部分只是WHERE部分,而select ... FROM ...部分中的字段和表名卻是無法注入的,那怎么可以將其它表的數據竊取出來呢?

          這個密秘就就是利用UNION語句。是的,標準SQL提供了UNION語句,可以將兩個select結果聯合起來(即對兩個select結果作并集)。UNION語句的語法如下:

          1. select column_name1(s) FROM table_name1

          2. UNION

          3. select column_name2(s) FROM table_name2

          較早的要求就是兩個select語句的列數要相等。

          有了UNION語句,就可以將 select * from userinfo WHERE ...和 select * from lyt_test.accounts兩個結果聯合起來。

          那么在沒有拿到源代碼的情況,怎么知道 select * from userinfo 查詢結果有多少列呢?

          可通過試探方法拿到這個數值:依次注入UNION select 1, ... N這樣的語句來試探。先嘗試 select 1, 再select 1,2, 然后select 1,2,3,直到不運行出錯為止??梢韵仍贛ySQL上測試一下,結果下圖所示:

          從上圖測試結果可知UNION后面跟的select結果必須是兩列,否則會出錯。

          們在注入時WHERE后是兩個條件嗎?(name = ‘name′ANDpasswd=′passswd ‘),在實際代碼中可能會是更復雜的條件,甚至黑客也很難猜測的條件,那這個UNION語然該插在那個變量呢?使得整個SQL還是個合法的查詢語句。

          最好安全的做法是將UNION select ...注入到靠前個變量中,然后注入的尾部增加一個注釋符號,將后的語句注釋掉,就不會考慮后面的是什么語句了。在MySQL數據庫,使用#符號即可實現注釋。

          可以做一下注入測試,驗證一下:

          在username文本框中輸入:ivan'unionselect 1,2#,如下圖:

          點login 按鈕后的運行結果如下圖所示:

          union注入結果

          請留注下紅框中生成的SQL語句:

          select * FROM userinfo WHERE name = ‘ivan’unionselect 1,2# AND passwd = ”

          #將后面的SQL內容注釋掉了,MySQL解析時直接將它干掉,相當于下面的SQL語句:

          select * FROM userinfo WHERE name = ‘ivan’unionselect 1,2

          select 1, 2的結果是常數行, 在后面的例中嘗試從表中查詢數據,而不完全是常數行。

          好了 ,UNION和#就是撬動爆庫的那個支點

          七、實踐爆庫

          以下實驗都是基于《SQL注入基礎》一文開發的數據庫應用demo來實驗的,如果讀者沒有SQL注入的基礎知識,建議看看這篇文章;同時建議SQL注入的初學者也按此文搭建相同的數據應用demo來實驗測試一把。

          八、爆數據庫列表

          往username中注入:ivan’unionselect 1,SCHEMA_NAME from information_schema.SCHEMATA #

          即可查詢所有數據庫列表如下圖:

          注入獲取所有數據庫

          圖示標紅色框的就是數據庫列表。我們在UNION select ...語句中靠前列為常數1,第二列是information_schema.SCHEMATA表中SCHEMA_NAME這一列,它剛好就是數據庫名。

          九、爆某個數據庫下的所有表名

          為了精減輸出結果,這里只爆lyt_test數據庫下的表名,往username中注入:

          ivan’unionselect 1,TABLE_NAME from information_schema.TABLES where TABLE_SCHEMA = ‘lyt_test’#

          即可查詢得lyt_test數據庫下所有表,如下圖所示:

          注入獲取lyt_test數據庫下的表

          不同的地方是lyt_test數據庫下只有accounts一個表,其它與爆數據庫原理相同。

          十、爆某個表下所有字段

          這里只爆accounts表下的所有字段,往username中注入:

          ivan’unionselect 1, COLUMN_NAME from information_schema.COLUMNS WHERE TABLE_NAME = ‘accounts’

          結果如下圖所示:

          注入獲取字段名

          標紅的是字段名。那么類型呢? 修改注入內容為:ivan’unionselect 1, DATA_TYPE from information_schema.COLUMNS WHERE TABLE_NAME = ‘accounts’

          就可以獲取字段類型信息,如下圖所示:

          注入獲了字段類型

          標紅色的分別是前面兩個字段的類型,即ID類型為char, balance類型為float。

          從上面可以發現規律:每個注入可以獲取到目標表中的每個列表數據, 如果表中有N表,注入N次可以獲取完整的表信息。

          總結

          SQL注入爆數據庫就是這么容易的,但有幾個必備條件:

          1. MySQL中出現一個元數據庫information_schema,它描述整個MySQL服務器所有數據庫->表->字段關系樹

          2. SQL語言提供了UNION語句,可以新增竊取其它數據合并到被注入select結果

          3. MySQL對SQL做擴展,提供注釋符#

          這是陽光明媚的一天,互聯網里風平浪靜,一切都是欣欣向榮。我就是在這樣一個平凡的日子里誕生了。我給自己起了個名字叫超,不過我的師哥師姐們都喜歡叫我小超。從出生的那...

          網上關于SEO優化的知識很多也很雜,很多新手都不知道如何選擇。本來耗子網站里每篇文章都有的詳細步驟的,考慮到很雜,于是耗子對各種SEO優化基礎知識進行了整理,但...

          今天,我給大家講講如何利用電影貼吧引流輕松變現。這個很適合新手。廢話不多說,直接上干貨。每上映一個新片子,只要這個片子有一定的熱度,馬上該片子的貼吧就會出現各種...

          網站權重怎么提升上去?4個小技巧網站權重提升輕松搞定網站權重值是SEO的重要一部分,網站的權重值越大,網站在搜索引擎中的分量就越重, 提升網站的權重值,可以讓網站頁面擁有更快的收錄速度,對于網站的排名也有著很大的影響。今天我們就和你講解一下:網站權重怎么提升上去!權重數值越大,說明該網站自然流量越大,自然流量大,那么相應的關鍵詞排名就相對靠前。權重、流量、關鍵詞排名三者之間的關系是相輔相成的。所以...

          百度優化是目前最重要的網絡營銷手段之一,尤其是對于希望獲得更多流量和更高轉化率的企業來說。因此,在百度中獲得更好的排名是至關重要的。然而,如何實現這一目標仍然是許多人不了解的事情。在本文中,我們將介紹一些有效的百度優化排名方法和技巧,幫助您更好地理解如何提升您的網站在百度中的排名。了解百度的算法原理首先,您需要了解百度搜索引擎的工作原理。百度搜索引擎使用復雜的算法來決定哪些網頁會出現在搜索結果中。...

          百度SEO關鍵詞介紹:百度SEO是指通過各種優化策略,讓網站在百度搜索引擎中排名更靠前,從而提高網站的曝光率和點擊率,增加網站流量,最終實現營銷目標的一種技術。其中,關鍵詞優化是百度SEO的重要環節,通過對關鍵詞的選擇、布局、密度等方面進行優化,可以有效提高網站的排名和曝光率。百度優化SEO技巧的4個方法:1.關鍵詞選擇:選取與網站主題相關、有一定搜索量的關鍵詞作為優化目標。2.關鍵詞布局:在網站...

          TOP
          国产初高中生视频在线观看|亚洲一区中文|久久亚洲欧美国产精品|黄色网站入口免费进人
          1. <nobr id="easjo"><address id="easjo"></address></nobr>

              <track id="easjo"><source id="easjo"></source></track>
              1. 
                

              2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
              3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>