利用SQL注入漏洞拖庫

來源:互聯網
上載者:User

想在本地測試的話,可以在此免積分下載:利用SQL注入漏洞拖庫

同上一篇文章(利用SQL注入漏洞登入後台)一樣,我們需要建立資料表,並在表中出入幾條資料以備測試之用。

在資料庫中建立一張表:

CREATE 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=7 DEFAULT CHARSET=latin1;

在表中插入資料的操作我就不貼代碼了,可以去下載下來直接匯入到資料庫。

接下來,寫一個處理使用者請求的頁面,這裡,我們故意不過濾使用者提交過來的資料,留下個SQL注入漏洞用來測試。

代碼如下:

<?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 "<p>利用SQL注入漏洞拖庫<p>";

if (!$row){

echo "該記錄不存在";

exit;

}

echo "標題<br>".$row['title']."<p>";

echo "內容<br>".$row['content']."<p>";

?>

我們直接在瀏覽器中輸入:

http://127.0.0.1/marcofly/phpstudy/sqlinsert/showart.php?id=1

即可訪問article表中id為1的一條記錄

訪問結果如下:

 

接下來,我們就利用這個漏洞(不知道該漏洞的情況下,只能通過工具+手工檢測),示範一下如何將article表下載下來。

在地址欄中輸入:’ into outfile 'e:/sql.txt'%23

分析:%23是#的ASCII碼,由於在地址欄中直接輸入#後到資料庫系統中會變成空,需要在地址欄中輸入%23,那麼才會變成#,進而注釋掉後面的sql語句。

運行之後,開啟E盤,發現多了一個sql.txt檔案,開啟之後,裡面就是表article中的一條記錄。

為什麼只有一條記錄呢?難道該資料表就只有一條記錄?不是這樣的,因為我們只檢索id為1的一條記錄而已,那麼能否將article表中的所有記錄一次性全部下載下來呢?

答案是可以的,只要你的構造的SQL語句足夠靈活(再次提出了構造SQL語句的靈活性)。

 

       分析一下,當在URL地址欄中輸入’into outfile 'e:/sql.txt'%23的時候,合并到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開發_小飛

轉載請註明:http://www.cnblogs.com/hongfei/archive/2012/01/12/sql-injection-tuoku.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.