91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

sql注入是什么

發布時間:2021-09-02 10:28:38 來源:億速云 閱讀:144 作者:小新 欄目:數據庫

這篇文章主要為大家展示了“sql注入是什么”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“sql注入是什么”這篇文章吧。

認識SQL注入

最開始就從最簡單的開始,進入到less-1開始我們的SQL注入學習之旅。

通過改變http://localhost/sqlilabs/Less-1/?id=3的id值,頁面上呈現不同的內容(username,password)。

那么我們就可以猜測在后臺中的SQL語句就是根據前臺傳入的id值來去對應的數據。

那么SQL語句的寫法為:

select username,password from table where id=input

判斷存在SQL語句

接下來進行做測試,使用以下的語句進行測試:

http://localhost/sqlilabs/Less-1/?id=3 and 1=1
http://localhost/sqlilabs/Less-1/?id=3 and 1=2

這個時候頁面沒有任何的變化,這是不和符合我們預期的結果,因為當id=3 and 1=2時,SQL語句變為select username,password from table where id=3 and 1=2頁面應該不會有內容。

確定存在SQL語句

使用了之前的語句不行之后,我們使用如下的語句:

http://localhost/sqlilabs/Less-1/?id=3'

當URl是以上的SQL語句時,頁面上顯示SQL執行錯誤信息You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''3'' LIMIT 0,1' at line 1

其中最關鍵的錯誤信息是:

''3'' LIMIT 0,1'

最外層的引號是mysql出錯時自動加上的。那么實際的SQL語句是 '3'' LIMIT 0,1。我們發現在我們輸入的3'被引號包圍了,那么我們之前猜測的select username,password from table where id=input有誤,實際的后臺的SQL語句應該為:

select username,password from table where id='input'

SQL注入驗證

在確定存在了SQL注入之后,同時知道了后臺SQL寫法,那么此時我們就可以注入自己的SQL注入的代碼。

由于我們可以控制id的值,那么最終輸入的SQL語句會變為:

select username,password from table where id='input 攻擊代碼'

此時我們就可以構造如下的payload來驗證我們的想法。由于我們的輸入是被一對單引號包裹的,所以我們輸入的語句必須要能夠不被單引號影響。要么閉合單引號,要么注釋掉單引號。(可以參考前面的文章)

#閉合單引號
id=1 and '1' = '1 # 
#注釋單引號
id=1 and 1=1 # 或者 id=1 and 1=1--+

當我們使用上面的這3個payload之后,頁面顯示的結果是符合預期的。那么我們也可以確定id參數確實是存在SQL注入的。后臺的SQL語句的寫法也的確是select username,password from table where id='input'

在確定了SQL語句之后,接下里就是注入SQL注入代碼了。

執行SQL注入

使用SQL語句來進行脫褲,這一點是十分關鍵的。如果僅僅是知道存在SQL注入但是無法脫褲,那么實際上這個漏洞對于該網站的危害性還是很小的。如何構造正確的SQL語句進行脫褲,這一點也是十分重要的,在下一篇文章中將會詳細地講解SQL注入的詳細的步驟。

注入類型判斷

在本題中的SQL語句就稱之為字符型的SQL注入,因為我們的輸入在SQL語句執行的過程中被單引號所包括,其實在SQL語句執行中,這個id參數被當做是一個字符類型的數據。除了有字符型的SQL注入,當然還有數字型的SQL語句。那么如何區分這兩者呢?

字符型SQL注入

在確定存在SQL語句這節中,當我們輸入id=3'是頁面的出錯信息是 '3'' LIMIT 0,1。我們發現3'被引號所包圍,那么說明這個就是一個字符型的SQL注入了。

數字型SQl注入

在less-2中,當我們同樣輸入id=3'時,頁面的出錯信息是 ' LIMIT 0,1,那么就說明是一個數字型的注入了同時還存在limit關鍵字,那么我們猜測less-2中的SQL注入為:

select username,password from table where id=input limit 0,1

以上都可以通過查看源代碼的方式來進行驗證。

SQL語句判斷

但是很多時候我們通過單引號的方式并不能返回sql執行語句的錯誤信息,就無法通過錯誤信息得到注入類型。因為很多時候在后臺的SQL語句會有各種千奇百怪的寫法。

在less-3和less-4中的寫法就是如下:

$sql="SELECT * FROM users WHERE id=('$id') LIMIT 0,1"

在less-3中使用了括號來包裹用戶的輸入

$id = '"' . $id . '"';
$sql="SELECT * FROM users WHERE id=($id) LIMIT 0,1";

在less-4中使用了雙引號來包裹用戶的輸入,那么當你即使加上了單引號進行測試的時候還是無法出發SQL語句執行錯誤。

所以說很多時候僅僅使用單一的符號進行判斷是完全不夠的,要多使用不同類型的符號來進行測試的判斷,使用包括',",\,(,=,&等等字符,甚至有時候還要使用其他的探查方法,因為你無法判斷后臺的SQL語句的寫法,而且目前很多的網站開發人員已經有了一定的安全意識,可能常規的SQL探查語句也無法使用。關于其他跟多SQL注入的探查語句,網上有很多的資料。

以上是“sql注入是什么”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

sql
AI

临沧市| 江口县| 柘城县| 泾川县| 简阳市| 西安市| 五指山市| 昭苏县| 富源县| 上蔡县| 霍山县| 新竹市| 中江县| 伊吾县| 蒙城县| 翁源县| 治多县| 许昌县| 宁明县| 云南省| 格尔木市| 台中县| 台东市| 巨鹿县| 东乌珠穆沁旗| 开封县| 毕节市| 红河县| 和平县| 闽侯县| 二连浩特市| 湘潭市| 宁德市| 南宫市| 叶城县| 泌阳县| 通榆县| 平乡县| 扶绥县| 鄂温| 龙海市|