SQL注入1----(sql注入原理)

一.前言

前面我們講解了一下信息收集,本章節我們來講解一下sql注入的基本原理,我們拿之前搭建的測試網站pikachu來測試,對應工具包也已經放在了工具里面,大家可以自行去下載。

SQL注入攻擊漏洞的原因,是由于程序員在編寫Web程序時,沒有對客戶端(比如瀏覽器等)提交的參數進 行嚴格的過濾和判斷。用戶可以修改參數或數據,并傳遞至服務器端,導致服務端拼接了偽造的SQL查 詢語句,服務端連接數據庫,并將偽造的sql語句發送給數據庫服務端執行,數據庫將sql語句的執行結 果,返回給了服務端,服務端又將結果返回給了客戶端,從而獲取到敏感信息,甚至執行危險的代碼或 系統命令。簡單來說就是:注入產生的原因是接受相關參數未經處理直接帶入數據庫查詢操作。

二.簡單示例

正常查詢

構造sql注入語句,查詢表中所有數據

xxx' or 1=1 #

查詢結果:

看后臺代碼后分析

三.如何查找注入點位置

一句話簡單概括就是:前端頁面上所有提交數據的地方,不管是登錄、注冊、留言板、評論區、分頁等 等地方,只要是提交數據給后臺,后臺拿著該數據和數據庫交互了,那么這個地方就可能存在注入點。

四.通過瀏覽器直接注入測試

構造聯合查詢語句

正常語句:

????????select id,username from member where username='vince';\

構造語句:

????????select id,username from member where username='xxx' union select username,password from users #'

注意一點:union為聯合查詢,但是union后面的select查詢的字段數量,必須和union前面的select查詢 字段個數相同,這是union的特點,通過上面頁面上的回顯效果來看,我們暫且確定為兩個字段,但是這樣判 斷字段個數是不對的,后面我們再詳解。

五.通過burp注入測試

在burp中可以修改任意的請求參數,當然我們如果是get請求,我們就得先把內容進行一下url編碼,再發送過去,這里就不給大家詳細介紹url編碼了當然空格的話我們可以用+代替,之后再發送請求看效果:

那這樣的話,其實我們可以自己寫很多的sql注入語句,然后放到某個文件中,充當我們的字典,然后在burp中配置使用一下這個字典文件數據,進行多個sql注入語句的發送測試。

六.常用的簡單測試語句和注釋符號說明

sql語句的注釋符號也是sql注入語句的關鍵點:常用 # 、 -- 。

1、# 和 -- (有個空格)表示注釋,可以使它們后面的語句不被執行。在url中,如果是get請求(記住是get請求),也就是我們在瀏覽器中輸入的url ,解釋執行的時候,url中#號是用來指導瀏覽器動作的,對服務器 端無用。所以,HTTP請求中不包括#,因此使用#閉合無法注釋,會報錯;而使用-- (有個空格),在傳輸過程 中空格會被忽略,同樣導致無法注釋,所以在get請求傳參注入時才會使用--+的方式來閉合,因為+會被解釋 成空格。

2.當然,也可以使用--%20,把空格轉換為urlencode編碼格式,也不會報錯。同理把#變成%23,也不報錯。

3.如果是post請求,則可以直接使用#來進行閉合。常見的就是表單注入,如我們在后臺登錄框中進行注入。

4.為什么--后面必須要有空格,而#后面就不需要? 因為使用--注釋時,需要使用空格,才能形成有效的sql語句,而#后面可以有空格,也可以沒有,sql就是這么規定的,記住就行了。 因為不加空格,--直接和系統 自動生成的單引號連接在了一起,會被認為是一個關鍵詞,無法注釋掉系統自動生成的單引號。

簡單測試語句:

引號測試,加了引號如果報錯,證明存在注入點

????????單引號閉合數據:$query="select id,email from member where username='vince'"; 用 單引號測試,會報錯,雙引號測試查不到數據,不報錯

????????雙引號閉合數據:$query='select id,email from member where username="vince"'; 用 雙引號測試,會報錯,單引號測試查不到數據,不報錯

or 1=1 一個條件為真,即為真,真的效果就是查詢到表中所有數據

where id=1 and 1=1 兩個條件為真才為真,查詢結果和不加1=1一樣,and 1=2 一個條件為假,即為 假,查詢條件為假,什么數據也沒有,兩個結合起來可以判斷是否存在注入點。

union select 聯合查詢 # 關系型數據庫 redis非關系型的是不能用union select的

七.總結

本章節我們講解了一下sql注入的原理以及知識點,接下來就是講解一下sql注入的分類啦,內容肯定會有點多,期待大家的點贊關注加收藏。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/94145.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/94145.shtml
英文地址,請注明出處:http://en.pswp.cn/web/94145.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++智能指針詳解:用法與實踐指南

C智能指針詳解:用法與實踐指南 在C編程中,動態內存管理始終是開發者面臨的重要挑戰。手動分配和釋放內存不僅繁瑣,還容易因疏忽導致內存泄漏、懸垂指針等問題。為解決這些痛點,C標準庫引入了智能指針(Smart Pointers&a…

fastdds qos:DurabilityQosPolicy

假如DataWriter先起來,并且已經寫了一些數據,之后有新的DataReader起來,那么新起來的DataReader能不能接收到它啟動之前,DataWriter發布的數據呢。DurabilityQosPolicy用來做這種控制。VOLATILE_DURABILITY_QOS:易失的…

【讀代碼】SQLBot:開源自然語言轉SQL智能助手原理與實踐

一、項目簡介 SQLBot 是 DataEase 團隊開源的自然語言轉 SQL 智能助手,致力于讓非技術用戶也能通過自然語言與數據庫對話,自動生成 SQL 查詢,實現自助數據分析、智能BI問答、報表生成等場景。SQLBot 結合了大語言模型(LLM)、數據庫元數據解析、SQL解析與執行等多項技術,…

開題報告被退回?用《基于大數據的慢性腎病數據可視化分析系統》的Hadoop技術,一次通過不是夢

💖💖作者:計算機編程小咖 💙💙個人簡介:曾長期從事計算機專業培訓教學,本人也熱愛上課教學,語言擅長Java、微信小程序、Python、Golang、安卓Android等,開發項目包括大數…

HEVC(H.265)與HVC1的關系及區別

HEVC(H.265)與HVC1的關系及區別可歸納如下:一、技術定義差異?HEVC(H.265)?國際標準化組織制定的通用視頻編碼標準,由ITU-T和ISO/IEC聯合開發?1支持8K分辨率,壓縮效率較H.264提升約50%?1?HV…

Java獲取被nginx代理的emqx客戶端真實ip

Java獲取被nginx代理的emqx客戶端真實ip 契機 ? 使用nginx作為負載均衡(Load Balancing)的時候,發現真實ip無法獲取。幾經折騰終于拿到真實ip,又發現被代理的端口又無法使用非代理模式連接,由于之前暴露的docker端口有…

Jenkins自動化部署服務到Kubernetes環境

在現代軟件開發中,持續集成和持續部署(CI/CD)已成為提高開發效率和軟件質量的關鍵實踐。本文將介紹如何使用Jenkins自動化部署服務到Kubernetes環境,并重點介紹Maven與私服的配置。 環境準備 在開始之前,請確保您已準備好以下環境: Jenkins服務器 Kubernetes集群 Docker鏡…

OpenAI重新開源!gpt-oss-20b適配昇騰并上線魔樂社區

2025年8月5日,OpenAI發布了兩款全新的開源權重語言模型,均為混合專家(MoE)架構,其規模設計可在消費級GPU和云端的多種硬件上高效運行。這些模型采用 Apache 2.0 許可協議,因此可用于蒸餾到其他推理模型中、…

SpringCloud入門(簡潔明了)

目錄 一.創建微服務項目 (一)環境準備 (二)項目結構圖 (三)流程 二. Nacos (一)注冊中心 1.服務注冊 2.服務發現 3.編寫微服務API 4.遠程調用基本實現 5.負載均衡 6.LoadBalanced注解式注解均衡 7.注冊中心宕機,遠程調用還能成功嗎 (二)配置中心 1.基…

集成算法學習筆記

一、集成算法簡介1. 核心思想類比“多個專家綜合判斷優于單個專家”,通過構建并結合多個個體學習器,提升模型的泛化能力(降低過擬合風險、提高預測準確性),完成復雜的學習任務。2. 個體學習器與結合模塊個體學習器&…

讓Chrome信任自簽名證書

讓Chrome信任自簽名證書(Unix系列OS) 背景 想在本地測試自己寫的基于HTTPS連接的Web應用,跑在3001端口。但使用Chrome瀏覽器訪問https://localhost:3001時顯示連接不安全。解決了但沒解決 使用mkcert一鍵創建證書: mkcert localho…

[江科大庫]基于 OpenMV 的矩形識別與 STM32 串口通信(電子設計大賽實用教程)

?? 基于 OpenMV 的矩形識別與 STM32 串口通信(電子設計大賽實用教程) 一、前言 在本科生電子設計大賽中,經常會遇到圖像識別相關的任務,例如: 識別 矩形框(如識別一個 A4 紙、黑色標記框等); 將識別結果傳輸到 STM32 單片機,用于后續控制(舵機、移動小車、機械臂…

人臉識別驅動的工廠人體屬性檢測與預警機制

人體屬性檢測:人臉識別智慧檢測驅動的工廠管理革新(所有圖片均為真實項目案例)在制造業數字化轉型浪潮中,人體屬性檢測技術已成為破解傳統工廠管理難題的核心工具。通過融合人臉識別智慧檢測、目標檢測算法與多模態數據分析&#…

數據工程師——ETL

ETL面試題01 一、基礎概念與理論類 1. 請解釋什么是 ETL?它在數據處理流程中扮演什么角色? 答:ETL就是數據抽取、轉化、加載。目的是將分散的數據源集中在一起進行處理分析。 數據抽取:是指各種數據源中抽取數據,包括關系型數據庫(MySQL、Oracle等)、日志文件、Exce…

Oracle APEX 經典報表中的Checkbox

目錄 1. 建表&投入測試數據 2. 經典報表做成 2-1. 畫面布局如下?編輯 2-2. 報表使用的SQL 2-3. RS列的Heading設定 2-4. Function and Global Variable Declaration 2-5. Execute when Page Loads 2-6. Process 3. 運行效果?編輯 1. 建表&投入…

Codeforces Round 1043 (Div.3)

比賽連接:Codeforces Round 1043 (Div.3) A. Homework 題目鏈接:A - Homework Vlad and Dima have been assigned a task in school for their English class. They were given two strings aaa and bbb and asked to append all characters from bbb …

GPS欺騙式干擾的產生

我們在GNSS抗干擾天線的選型、測試方法以及為什么不能做RTK?(抗干擾內容全集)中提到的抗干擾天線,針對的是GPS壓制式干擾。對于GPS欺騙式干擾,抗干擾天線是無能為力的。 簡單來說,壓制式干擾是通過發射強功…

[PV]AXI R/W/RW帶寬計算的tcl腳本

AXI R/W/RW帶寬計算的tcl腳本 我基于前述的axi_read_bw_per_id.tcl腳本進行了修改,使其支持: 讀通道(Read Channel):計算基于rvalid && rready的有效周期(已在前述實現)。 寫通道(Write Channel):計算基于wvalid && wready的有效周期,考慮wstrb的ac…

阿里云AnalyticDB同步數據至華為云taurusdb

1 概述 AnalyticDB和taurusdb都是高度兼容mysql協議的數據庫,從現有的AnalyticDB官方數據同步方案來看,只有FlinkSQL合適。 同步方案官方文檔: https://help.aliyun.com/zh/analyticdb/analyticdb-for-mysql/user-guide/flink-subscribes-b…

學習嵌入式之驅動——系統移植(二)

一、uboot常用命令與環境變量1.命令:(1)環境變量操作命令命令功能格式printenv 查看環境變量printenvsetenv新建/修改環境變量setenv 環境變量名 環境變量值saveenv保存環境變量saveenv(2)內存操作命令命令功能格式示例…