日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

什么是SQL注入呢。SQL注入就是WEB應用沒對用戶輸入的數據進行限制和檢查,導致惡意攻擊者可以通過網頁的顯示情況不同甚至是直接顯示數據而獲取數據庫數據的一種攻擊方式。

首先看下回顯注入,這個簡單,這個SQL注入是由于瀏覽器沒有對URL后面id的參數進行限制,我們通過聯合查詢這樣的SQL語句就能查詢到有哪些數據庫并且直接顯示在網頁上,想要查詢其他的數據,更改查詢語句即可。

SQL注入獲取數據的幾種原理

 

現在我們來說下盲注,就是你不能從網頁上直接獲得數據,比如說我在本地搭建了一個網站,它的網頁URL是這樣的:

http://localhost/index.php?id=1,它的網頁跟上圖不一樣,不直接顯示你要查詢的數據,只會顯示兩種不同的情況,我們把它認為是TRUE和FALSE,通過and判斷?id=1 and 1=1 它是TRUE,?id=1 and 1=2 它是FALSE,也就是說and后面的數據是對的,就是TRUE,是錯的,就是FALSE。當然實際不會直接顯示TRUE和FALSE,而是兩種不同的頁面而已。

這個時候我們該怎么要獲得我們要查詢的數據呢,那就要利用ASCII,ASCII就是給每種英文字符和特殊符號的一種編碼,比如A-65、a-97等,我們先看下面這樣的URL:

http://localhost/index.php?id=1’ and ascii(substr((select database()),0,1))>97 --+

這個我從里向外解析下,select database() 這個查詢數據庫的語句;substr() 這是php的截取字符串函數,第一個參數是查詢到的數據庫,第二個參數0是索引,也就是從截取字符串的第一個字母開始向后截,第三個參數1就是只截取1個字符,也就是說substr()取到的數據時數據庫名的第一個字母,而ascii()這個函數就是取這個字母的ASCII碼值,然后與數值97比較。

首先我們是不知道數據庫名的,如果這個庫名的第一個字母是a,那么>、<97都顯示FALSE,=97顯示TRUE;數據庫名第一個字母如果不是a,通過更改ASCII碼值97,利用二分法可以減小步驟快一點也就是>97或<97,然后在取97區間的一半;同理判斷數據庫名其他的字母通過更改substr()第二個參數索引就行,查表名同理,修改substr()第一個參數里的select語句就行,通過這種方法我們就可以取得數據庫中得信息了。。

這就是SQL注入盲注獲取數據的原理,當然這樣是很慢,寫腳本交給機器跑就行,這也是我們平常為什么通過and 1=1 和 and 1=2 來判斷SQL注入的原因。

現在我們再看一種SQL注入獲取數據的方式:報錯注入,這個漏洞影響CMS系統joomla,版本號為3.7.0,CVE編號為CVE-2017-8917。搭建環境一套是PHPstudy系統,這個系統集php、MySQL、Apache于一體的環境,將我們的joomla放到WWW目錄,然后進入joomla主頁完成安裝即可,這個簡單,不上圖了,我們看一下sql注入存在的位置。

SQL注入獲取數據的幾種原理

 

這里我先解析一下報錯注入獲取數據的原理,我用的報錯函數是updatexml(Doc,XPathstring,new_value),Doc是文檔對象,new_value是用來替換XPathstring字符串的值,原理就是XPathstring字符串形式是:'html/body/h1',利用concat()組合出來的字符串不是XPath形式的字符串來產生報錯從而執行congcat()函數里的SQL語句,這里的0x3a是:,這里用來concat()函數拼接的,你也可以換其他的,不用糾結,總的需要一個來作為拼接參數。

解析一下這個注入的緣由,這個組件的構造函數說明位于componentscom_fieldscontroller.php,這里我們看出要加載com_fields這個組件,需要兩個且條件,即 view=fields&&layout=modal,即構造的URL:http://localhost/Joomla_3.7.0/index.php?option=com_fields&view=fields&layout=modal

SQL注入獲取數據的幾種原理

 

該組件的模型存在注入問題位于administratorcomponentscom_fieldsmodelsfields.php,在getListQuery函數里,getState()函數獲取list的fullordering的鍵值,而這里沒有對fullordering進行嚴格的過濾,就把它傳給查詢參數。

SQL注入獲取數據的幾種原理

 

而State狀態這個參數會被View視圖獲取,位于administratorcomponentscom_fieldsviewsfieldsview.html.php頁面,會作為display函數的一個參數,用于展示在網頁上,這也是這個報錯注入回顯在網頁上的原因。

SQL注入獲取數據的幾種原理

 

由此,最終的exp注入方式如下:

http://localhost/Joomla_3.7.0/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml(1,concat(0x3a,(select%20database()),0x3a),1)

分享到:
標簽:注入 SQL
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定