亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > MySQL > 正文

利用SQL注入漏洞登錄后臺的實現方法

2020-01-19 00:02:29
字體:
來源:轉載
供稿:網友
早在02年,國外關于SQL注入漏洞的技術文章已經很多,而國內在05年左右才開始的。
  如今,談SQL注入漏洞是否已是明日黃花,國內大大小小的網站都已經補上漏洞。但,百密必有一疏,入侵是偶然的,但安全絕對不是必然的。
  前些天,網上傳得沸沸揚揚的“拖庫”事件給我們敲響了安全警鐘。
  在開發網站的時候,出于安全考慮,需要過濾從頁面傳遞過來的字符。通常,用戶可以通過以下接口調用數據庫的內容:URL地址欄、登陸界面、留言板、搜索框等。這往往給駭客留下了可乘之機。輕則數據遭到泄露,重則服務器被拿下。
現在,很多網站開發人員知其然而不知其所以然,小弟也是,所以趕緊惡補下,總結如學習內容。希望對初學者能夠起到拋磚引玉的作用。
一、SQL注入的步驟
a) 尋找注入點(如:登錄界面、留言板等)
b) 用戶自己構造SQL語句(如:' or 1=1#,后面會講解)
c) 將sql語句發送給數據庫管理系統(DBMS)
d) DBMS接收請求,并將該請求解釋成機器代碼指令,執行必要的存取操作
e) DBMS接受返回的結果,并處理,返回給用戶
因為用戶構造了特殊的SQL語句,必定返回特殊的結果(只要你的SQL語句夠靈活的話)。
下面,我通過一個實例具體來演示下SQL注入
二、SQL注入實例詳解(以上測試均假設服務器未開啟magic_quote_gpc)
1) 前期準備工作
先來演示通過SQL注入漏洞,登入后臺管理員界面
首先,創建一張試驗用的數據表:
復制代碼 代碼如下:

CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(64) NOT NULL,
`password` varchar(64) NOT NULL,
`email` varchar(64) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `username` (`username`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;

添加一條記錄用于測試:
復制代碼 代碼如下:

INSERT INTO users (username,password,email)
VALUES('MarcoFly',md5('test'),'marcofly@test.com');

接下來,貼上登錄界面的源代碼:
復制代碼 代碼如下:

<html>
<head>
<title>Sql注入演示</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
</head>
<body >
<form action="validate.php" method="post">
<fieldset >
<legend>Sql注入演示</legend>
<table>
<tr>
<td>用戶名:</td><td><input type="text" name="username"></td>
</tr>
<tr>
<td>密  碼:</td><td><input type="text" name="password"></td>
</tr>
<tr>
<td><input type="submit" value="提交"></td><td><input type="reset" value="重置"></td>
</tr>
</table>
</fieldset>
</form>
</body>
</html>

附上效果圖:

當用戶點擊提交按鈕的時候,將會把表單數據提交給validate.php頁面,validate.php頁面用來判斷用戶輸入的用戶名和密碼有沒有都符合要求(這一步至關重要,也往往是SQL漏洞所在)
代碼如下:
復制代碼 代碼如下:

<html>
<head>
<title>登錄驗證</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
</head>
<body>
<?php
$conn=@mysql_connect("localhost",'root','') or die("數據庫連接失??!");;
mysql_select_db("injection",$conn) or die("您要選擇的數據庫不存在");
$name=$_POST['username'];
$pwd=$_POST['password'];
$sql="select * from users where username='$name' and password='$pwd'";
$query=mysql_query($sql);
$arr=mysql_fetch_array($query);
if(is_array($arr)){
header("Location:manager.php");
}else{
echo "您的用戶名或密碼輸入有誤,<a href=/"Login.php/">請重新登錄!</a>";
}
?>
</body>
</html>

注意到了沒有,我們直接將用戶提交過來的數據(用戶名和密碼)直接拿去執行,并沒有實現進行特殊字符過濾,待會你們將明白,這是致命的。
代碼分析:如果,用戶名和密碼都匹配成功的話,將跳轉到管理員操作界面(manager.php),不成功,則給出友好提示信息。
登錄成功的界面:

登錄失敗的提示:

到這里,前期工作已經做好了,接下來將展開我們的重頭戲:SQL注入
2) 構造SQL語句
填好正確的用戶名(marcofly)和密碼(test)后,點擊提交,將會返回給我們“歡迎管理員”的界面。
因為根據我們提交的用戶名和密碼被合成到SQL查詢語句當中之后是這樣的:
select * from users where username='marcofly' and password=md5('test')
很明顯,用戶名和密碼都和我們之前給出的一樣,肯定能夠成功登陸。但是,如果我們輸入一個錯誤的用戶名或密碼呢?很明顯,肯定登入不了吧。恩,正常情況下是如此,但是對于有SQL注入漏洞的網站來說,只要構造個特殊的“字符串”,照樣能夠成功登錄。
比如:在用戶名輸入框中輸入:' or 1=1#,密碼隨便輸入,這時候的合成后的SQL查詢語句為:
select * from users where username='' or 1=1#' and password=md5('')
語義分析:“#”在mysql中是注釋符,這樣井號后面的內容將被mysql視為注釋內容,這樣就不會去執行了,換句話說,以下的兩句sql語句等價:

復制代碼 代碼如下:

select * from users where username='' or 1=1#' and password=md5('')

等價于
復制代碼 代碼如下:

select * from users where username='' or 1=1

因為1=1永遠是都是成立的,即where子句總是為真,將該sql進一步簡化之后,等價于如下select語句:
select * from users
沒錯,該sql語句的作用是檢索users表中的所有字段
小技巧:如果不知道' or 1=1#中的單引號的作用,可以自己echo 下sql語句,就一目了然了。
看到了吧,一個經構造后的sql語句竟有如此可怕的破壞力,相信你看到這后,開始對sql注入有了一個理性的認識了吧~
沒錯,SQL注入就是這么容易。但是,要根據實際情況構造靈活的sql語句卻不是那么容易的。有了基礎之后,自己再去慢慢摸索吧。
有沒有想過,如果經由后臺登錄窗口提交的數據都被管理員過濾掉特殊字符之后呢?這樣的話,我們的萬能用戶名' or 1=1#就無法使用了。但這并不是說我們就毫無對策,要知道用戶和數據庫打交道的途徑不止這一條。
更多關于SQL注入的信息請看我的另一篇博文:利用SQL注入漏洞拖庫
原創文章:WEB開發_小飛
轉載請注明:http://www.cnblogs.com/hongfei/archive/2012/01/12/sql-injection-tuoku.html

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品一区二三区不卡| 91夜夜未满十八勿入爽爽影院| 亚洲国产成人久久| 91亚洲精品一区| 亚洲春色另类小说| 欧美激情欧美狂野欧美精品| 欧美性猛交xxxxx水多| 国产精品偷伦一区二区| 欧美精品videossex88| 美女久久久久久久| 日韩在线观看精品| 久久久精品视频在线观看| 久久久精品免费| 一区二区三区四区视频| 日韩av电影在线免费播放| www.欧美视频| 丝袜亚洲欧美日韩综合| 亚洲一区二区三区乱码aⅴ| 日本久久久久亚洲中字幕| 91牛牛免费视频| 98视频在线噜噜噜国产| 欧美成人精品一区二区三区| 日韩国产高清污视频在线观看| 狠狠躁夜夜躁人人爽天天天天97| 69精品小视频| 成人在线国产精品| 日韩经典一区二区三区| 国产精品7m视频| 欧美一级免费看| 欧美在线视频在线播放完整版免费观看| 国产精品嫩草影院久久久| 国内偷自视频区视频综合| 欧美亚洲午夜视频在线观看| 久久久精品一区二区三区| 日本午夜精品理论片a级appf发布| 在线视频免费一区二区| 久久久黄色av| 色在人av网站天堂精品| 狠狠色噜噜狠狠狠狠97| 日韩一区二区精品视频| 欧美激情综合亚洲一二区| 上原亚衣av一区二区三区| 亚洲激情第一页| 欧美精品18videos性欧美| 国外成人性视频| 国产日韩欧美电影在线观看| 国产精品96久久久久久又黄又硬| 亚洲男人第一av网站| 青青草99啪国产免费| 国内精久久久久久久久久人| 性欧美xxxx| 欧美电影免费观看| 日韩有码在线视频| 清纯唯美日韩制服另类| 国产精品91在线| 国产精品久久久av久久久| 欧美性69xxxx肥| 日本不卡视频在线播放| 日韩亚洲欧美中文在线| 91啪国产在线| 日韩在线中文字| 7777精品视频| 奇米一区二区三区四区久久| 亚洲性线免费观看视频成熟| 午夜精品久久久久久久白皮肤| 57pao成人永久免费视频| 国产精品久久99久久| 国产精品ⅴa在线观看h| 欧美高清视频在线播放| 精品国产一区二区三区四区在线观看| 97色在线视频| 91精品视频播放| 美女啪啪无遮挡免费久久网站| 国产91对白在线播放| 97视频免费在线观看| 97精品久久久| 亚洲欧美日韩国产中文| 日韩电视剧免费观看网站| 久久久久久伊人| 国产精品91久久| 日韩av在线导航| 国产精品久久中文| 国产免费一区视频观看免费| 久久久久久久久久久网站| 青草青草久热精品视频在线网站| 亚洲免费视频在线观看| 色99之美女主播在线视频| 国产噜噜噜噜久久久久久久久| 国产丝袜精品第一页| 亚洲福利视频网| 日韩福利在线播放| 欧美壮男野外gaytube| 欧美性猛交xxxx免费看漫画| 国产精品白丝jk喷水视频一区| 国产精品wwwwww| 欧美黑人视频一区| 国产在线精品播放| 精品久久久91| 国产精品久久不能| 日韩在线国产精品| 亚洲精品在线观看www| 69久久夜色精品国产69乱青草| 亚洲欧美综合另类中字| 91久久精品在线| 久久香蕉国产线看观看av| 欧美日韩亚洲视频一区| 欧美成人亚洲成人| 亚洲人成电影网站色…| 成人综合国产精品| 国产精品美女久久| 国模私拍一区二区三区| 成人在线视频网站| 日韩成人激情在线| 亚洲人午夜精品免费| 欧美三级xxx| 中文字幕精品久久| 中文字幕免费精品一区高清| 精品国产精品三级精品av网址| 97精品一区二区视频在线观看| 国产精品爱啪在线线免费观看| 亚洲资源在线看| 国产亚洲精品久久久久动| 久久亚洲精品中文字幕冲田杏梨| 欧美视频精品一区| 欧美肥臀大乳一区二区免费视频| 国产在线视频欧美| 亚洲奶大毛多的老太婆| 亚洲欧美日韩国产成人| 国产精品久久久亚洲| 亚洲性日韩精品一区二区| 欧美洲成人男女午夜视频| 欧洲永久精品大片ww免费漫画| 成人精品久久久| 777午夜精品福利在线观看| 亚洲欧美另类国产| 91性高湖久久久久久久久_久久99| 日本中文字幕不卡免费| 国产一区二区三区高清在线观看| 国产精品久久久久久久久久久久久| 欧美午夜无遮挡| xxxx性欧美| 欧美亚洲成人网| 久久天天躁狠狠躁夜夜躁| 中文字幕日韩专区| 国产精品亚洲视频在线观看| 亚洲成人在线视频播放| 久久国产精品久久久| 国产视频精品va久久久久久| 8090成年在线看片午夜| 欧美日韩国产91| 国产亚洲欧美日韩美女| 国模吧一区二区三区| 亚洲欧美一区二区三区在线| 国产一区二区三区在线视频| 午夜精品久久久久久久男人的天堂| 中文字幕亚洲欧美在线| 久久国产精品久久久久久久久久| 欧美亚洲成人网| 国产一区二区黑人欧美xxxx| 久久99热这里只有精品国产| 亚洲一级黄色片| 精品国偷自产在线视频| 国产精品稀缺呦系列在线| 欧美激情视频在线观看|