Web網(wǎng)絡(luò)安全分析Union注入攻擊原理詳解
1、Union注入攻擊
Union注入攻擊的測(cè)試地址:http://127.0.0.1/sqli/union.php?di=1。
訪問該網(wǎng)址時(shí),頁(yè)面返回的結(jié)果如圖6所示。
圖6 訪問id=1時(shí)頁(yè)面的結(jié)果
在URL后添加一個(gè)單引號(hào),再次訪問,如圖7所示,頁(yè)面返回結(jié)果與id=1的結(jié)果不同。
圖7 訪問id=1'時(shí)頁(yè)面的結(jié)果
訪問id=1 and 1=1,由于and 1=1為真,所以頁(yè)面應(yīng)返回與id=1相同的結(jié)果,如圖8所示。訪問id=1 and 1=2,由于and 1=2為假,所以頁(yè)面應(yīng)返回與id=1不同的結(jié)果,如圖9所示。
圖8 訪問id=1 and 1=1時(shí)頁(yè)面的結(jié)果
圖9 訪問id=1 and 1=2時(shí)頁(yè)面的結(jié)果
可以得出該網(wǎng)站可能存在SQL注入漏洞的結(jié)論。
接著,使用order by 1-99語句查詢?cè)摂?shù)據(jù)表的字段數(shù)量,如訪問id=1 order by 3,頁(yè)面返回與id=1相同的結(jié)果,如圖10所示。
訪問id=1 order by 4,頁(yè)面返回與id=1不同的結(jié)果,則字段數(shù)位3,如圖11所示。
圖10 訪問d=1 order by 3時(shí)頁(yè)面的結(jié)果
圖11 訪問d=1 order by 4時(shí)頁(yè)面的結(jié)果
在數(shù)據(jù)庫(kù)中查詢參數(shù)ID對(duì)應(yīng)的內(nèi)容,然后將數(shù)據(jù)庫(kù)的內(nèi)容輸出到頁(yè)面,由于是將數(shù)據(jù)輸出到頁(yè)面上的,所以可以使用Union注入,且通過order by查詢結(jié)果,得到字段數(shù)為3,所以Union注入的語句如下所示。
union select 1,2,3
如圖12所示,可以看到頁(yè)面成功執(zhí)行,但沒有返回union select的結(jié)果,這是出于代碼只返回第一條的結(jié)果,所以u(píng)nion select獲取的結(jié)果沒有輸出到頁(yè)面。
圖12 訪問id=1 union select 1,2,3時(shí)頁(yè)面的結(jié)果
可以通過設(shè)置參數(shù)ID值,讓服務(wù)端返回union select的結(jié)果,例如,把ID的值設(shè)置為-1,這樣數(shù)據(jù)庫(kù)中沒有id=-1的數(shù)據(jù),所以會(huì)返回union select的結(jié)果,如圖13所示。
圖13 訪問id=-1 union select 1,2,3時(shí)頁(yè)面的結(jié)果
返回結(jié)果為2 : 3,意味著在union select 1,2,3中,2和3的位置可以輸入MySQL語句。我們嘗試在2的位置查詢當(dāng)前數(shù)據(jù)庫(kù)名(使用database()函數(shù)),訪問od=-1 union delect 1,database(),3,頁(yè)面成功返回了數(shù)據(jù)庫(kù)信息,如圖14所示。
圖14 利用Union注入獲取database()
得知了數(shù)據(jù)庫(kù)名后,接下來輸入以下命令查詢表名(數(shù)據(jù)庫(kù)名test根據(jù)實(shí)際情況進(jìn)行替換)。
select table_name from information_schema.tables where table_schema='test' limit 0,1
嘗試在2的位置粘貼語句,這里需要加上括號(hào),結(jié)果如圖15所示,頁(yè)面返回了數(shù)據(jù)庫(kù)的第一個(gè)表名。如果需要看第二個(gè)表名,則修改limit中的第一位數(shù)字,例如使用limit 1,1就可以獲取數(shù)據(jù)庫(kù)的第二個(gè)表名,如圖16所示。
圖15 利用Union注入獲取第一個(gè)表名
圖16 利用Union注入獲取第二個(gè)表名
現(xiàn)在所有的表名全部查詢完畢,已知數(shù)據(jù)庫(kù)名和表名,開始查詢字段名,這里以emails表名為例,查詢語句如下所示。
select column_name from information_schema.columns where table_schema='test' and table_name='emails' limit 0,1
嘗試在2和3的位置粘貼語句,括號(hào)還是不可少,結(jié)果如圖17所示,獲取了emails表的第一個(gè)和第二個(gè)字段名。
圖17 利用Union注入獲取第一個(gè)和第二個(gè)字段名
當(dāng)獲取了庫(kù)名、表名和字段名時(shí),就惡意構(gòu)造SQL語句查詢數(shù)據(jù)庫(kù)的數(shù)據(jù),例如查詢字段email_id對(duì)應(yīng)的數(shù)據(jù),構(gòu)造的SQL語句如下所示。
select email_id from test.emails limit 0,1
結(jié)果如圖18所示,頁(yè)面返回了email_id的第一條數(shù)據(jù)。
圖18 利用Union注入獲取數(shù)據(jù)
2、Union注入代碼分析
在Union注入頁(yè)面中,程序獲取GET參數(shù)ID,將ID拼接到SQL語句中,在數(shù)據(jù)庫(kù)中查詢參數(shù)ID隨影的內(nèi)容,然后將第一條查詢結(jié)果中的username和address輸出到頁(yè)面,由于是將數(shù)據(jù)輸出到頁(yè)面上的,所以可以利用Union語句查詢其他數(shù)據(jù),頁(yè)面源代碼如下。
<?php $con=mysqli_connect("localhost","root","root","test"); // 檢測(cè)連接 if (mysqli_connect_errno()) { echo "連接失敗: " . mysqli_connect_error(); } $id = @$_GET['id']; $result = mysqli_query($con,"select * from users where `id`=".$id); if (!$result) { exit(); } $row = mysqli_fetch_array($result); echo @$row['username'] . " : " . @$row['password']; echo "<br>"; ?>
當(dāng)訪問id=1 union select 1,2,3時(shí),執(zhí)行的SQL語句為:
select * from users where 'id'=1 union select 1,2,3
以上就是Web網(wǎng)絡(luò)安全分析Union注入攻擊原理詳解的詳細(xì)內(nèi)容,更多關(guān)于Web網(wǎng)絡(luò)安全Union注入攻擊的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
DDoS攻擊與CC攻擊網(wǎng)絡(luò)安全的兩大挑戰(zhàn)如何應(yīng)對(duì)防御
這篇文章主要為大家介紹了面對(duì)DDoS攻擊與CC攻擊網(wǎng)絡(luò)安全的兩大挑戰(zhàn)應(yīng)該如何應(yīng)對(duì),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2023-10-10網(wǎng)絡(luò)安全漏洞滲透測(cè)試之文件上傳繞過思路案例詳解
這篇文章主要為大家介紹了網(wǎng)絡(luò)安全漏洞滲透測(cè)試之文件上傳繞過思路的案例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-02-02網(wǎng)絡(luò)安全常見問題隱患及其應(yīng)對(duì)措施詳解
這篇文章主要為大家介紹了網(wǎng)絡(luò)安全常見問題隱患及其應(yīng)對(duì)措施詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10系統(tǒng)安全之加密與解密的應(yīng)用技巧與使用方法
系統(tǒng)安全之加密與解密的應(yīng)用技巧與使用方法...2007-08-08修改TTL值的具體實(shí)現(xiàn)方法,防內(nèi)網(wǎng)“窺視”
修改TTL值的具體實(shí)現(xiàn)方法,防內(nèi)網(wǎng)“窺視”...2007-02-02網(wǎng)站存在啊D注入工具的SQL注入點(diǎn)的修復(fù)方法
我的網(wǎng)站還有我給老師做的單片機(jī)網(wǎng)站相繼被黑,從他那得知,他用的是“啊D注入工具”,先找我的網(wǎng)站是否存在可注入點(diǎn),如果有,進(jìn)行注入,能夠破解得到后臺(tái)密碼2012-12-12突破神奇的Cloudflare防火墻的網(wǎng)絡(luò)安全學(xué)習(xí)
這篇文章主要為大家介紹了突破神奇的Cloudflare防火墻的網(wǎng)絡(luò)安全學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07網(wǎng)絡(luò)安全滲透測(cè)試反序列化漏洞分析與復(fù)現(xiàn)工作
這篇文章主要為大家介紹了網(wǎng)絡(luò)安全滲透測(cè)試反序列化漏洞分析與復(fù)現(xiàn)的工作流程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-02-02