Web漏洞

一、Sql注入

sql注入漏洞的成因是由于后端數據庫查詢語句沒有做過濾導致了前端輸入字符串可以直接拼接到語句而獲取數據庫信息。

1.類型

數字型和字符型

區分:數字型可以進行加減運算,id=1+1會獲取id=2的信息,而字符型只會獲取1的數據

2.方法

(1)聯合查詢

使用union select 聯合查詢,通過mysql的information_schema數據庫中的columns表和tables表獲取

#使用聯合查詢之前要使用order by看看數據的列數,再聯合查詢相應的列數
#此時假設有3列數據,聯合查詢先用1,2,3看看頁面回顯是哪個數據1還是2還是3的位置
union select  1,2,3;
#知道數據回顯位置,比如2,3在頁面某個位置出現回顯,那么就可以再2或者3上進行數據查詢,從而回顯到頁面,先查詢數據庫獲取當前數據庫
union select 1,database(),3  
#獲取數據庫名后應該需要獲取表名 如何獲取?
#mysql數據庫存在一個information_schema數據庫,有所有的數據庫,表,字段名的信息,可以通過這個已知的數據庫以及已知的表都存放在tables表里來進行查詢,否則你不知道當前數據庫的表有哪些,也無法查詢。
union select 1,group_concat(table_name) from information_schema.tables where table_schema="當前數據庫名",3;
#獲取表名以后,就要看看這個表里都有什么字段名,可以通過columns表
union select 1,group_concat(column_name) from information_schema.columns where table_schema="當前數據庫名" and table_name="想查詢表名",3;
#知道了數據庫名表名和字段名就可以直接通過select語句進行查詢
union select [字段名] from 數據庫.表名 
(2)報錯注入

使用函數extractvalue()函數,由于有些函數的優先級高,會優先執行函數里的內容再返回,使用該函數來實現報錯,然后利用concat來進行語句的查詢。先執行函數里的內容然后使用concat來執行

extractvalue():函數只有兩個參數

extractvalue(xml_document, xpath_string) 通常sql報錯注入的語句放在第二個參數位置,因為第一個參數是xml文檔,不是合法 XML就會報錯,也會執行語句但是局限較大。第二個參數使用concat可以進行拼接等操作,靈活性比較大

#爆破數據庫,concat輸入特殊字符報錯,使用database查詢,查詢語句同聯合查詢類似。
select extractvalue(1,concat(~,database(),~))#注意點:這個函數以及updatexml函數都最多返回32個字符多余的會被截斷,因此會采用截取子字符串的方法最后拼接來獲取整個數據信息
#用法如下:
select extractvalue(1,concat(~,substr(database(),1,32),~))
(3)布爾盲注

連接符使用and

substr(str, pos, len)

str:要截取的字符串

pos:起始位置(從 1 開始計數,不是 0!)

len:截取的長度(可省略,如果省略則取到末尾)

利用了頁面注入正確有回顯,注入錯誤無回顯,來判斷注入情況,獲取信息,因此可以單個字符判斷

#1.獲取數據庫長度使用length()一個個試
length(database())=n;
#2.猜數據庫名,有回顯說明ascii值對應的字母是正確的,再猜測下一個
ascii(substr(database(),1,1))= [ascii值]
(4)延時盲注

sleep():使用sleep函數來讓頁面延遲響應通過響應時間判斷正確與否

if(ascii(substr((database()), i, 1)) = N, SLEEP(5), 0)
(5)寬字節注入

由于后端使用轉義字符導致的寬字節注入,即使用gbk編碼,將轉義字符與一個大于255的編碼組合起來會自動當作gbk編碼為一個漢字或其他語言的字,即需要兩個字節,相當于把后端帶的轉義字符與注入的合并起來導致轉義字符無效。

#吞掉后使用聯合查詢一樣正常查詢
id=-1 %df'  union select 1,2,3 --+
(6)堆疊注入

堆疊注入即有些數據庫支持多條語句輸入,即可以使用分號結束語句并在后面執行其他語句也可以成功執行。

1'; insert into [表名] value(值);
(7)二次注入

由于數據庫對已經確認過的數據過于信任沒有進行二次驗證導致出現了二次注入的漏洞

比如創建了一個admin’#用戶 而數據庫已經存在admin用戶,那么再修改密碼時沒有驗證用戶身份而是直接找到這個用戶進行修改,修改過程中’#有其他特殊含義,導致后面的原始密碼被注釋可以直接修改密碼且修改的密碼用戶是admin,因為’#有特殊含義

3.防御

(1)使用預編譯/參數化查詢

把sql語句和數據分開處理,避免拼接。

預編譯:先告訴數據庫這條 SQL 的“結構”(有兩個 ? 占位符)。數據庫編譯并優化語句結構。再把參數安全地綁定進去。

**PHP (PDO):**是 PHP 提供的數據庫訪問抽象層

支持 預編譯,防 SQL 注入。

$stmt = $pdo->prepare("SELECT * FROM users WHERE username = ? AND password = ?");
$stmt->execute([$username, $password]);

**Java (JDBC):**是 Java 的數據庫連接 API,用于操作各種數據庫。

PreparedStatement stmt = conn.prepareStatement("SELECT * FROM users WHERE username=? AND password=?"
);
stmt.setString(1, username);
stmt.setString(2, password);
ResultSet rs = stmt.executeQuery();
(2)使用Web應用防火墻(WAF)

對常見的sql注入payload進行攔截

二、XSS漏洞

1.類型

(1)反射型

經過服務器未經過濾直接返回到頁面。一次性的

出現位置:搜索框

(2)存儲型

上傳存儲到數據庫,每次訪問的時候都會加載,由于數據庫沒對前端輸入的代碼進行過濾

出現位置:留言板,評論區

(3)DOM型

沒有經過服務器直接在前端執行,JS 直接拼接用戶輸入進 DOM。

出現位置:前端 JS 對 DOM 的處理

2.繞過方法

1.直接注入
<script>alert(/1/)</script>
2.大小寫繞過

可能黑名單限制了script一些相關字符的輸入,但是卻忘記忽略大小寫,因此可以嘗試將關鍵字大小寫修改嘗試

<Script>alert(/1/)</Script>
3.雙寫繞過

可能對字符串進行過濾,但是替換為空字符而不是下劃線之類的符號,導致可以使用雙寫繞過

<Scrscriptipt>alert(/1/)</Scscriptript>
4.img標簽報錯繞過

讓img標簽報錯,報錯時執行, 因此可以手動設置錯誤的圖片路徑導致報錯響應

<img src=1 onerror='alert(1)'>
5.閉合標簽繞過

如果使用了input標簽可以嘗試使用閉合繞過,不過要查看源碼看看閉合方式

<--最簡單的一種,也可以使用閉合+img/a/偽協議/大小寫/雙寫 結合繞過 !-->
'> <script>alert(/1/)</script>
6.onclick繞過

input標簽,可以使用閉合+onclick,實現點擊彈窗,不用

' onclick='alert(1)   <-后面應該有原有的閉合->
7.a標簽偽協議繞過

JavaScript偽協議繞過,比如識別<script但是沒有識別javascript時可以使用偽協議繞過

<a href=javascript: alert('1')>
8.a標簽編碼特殊繞過方式

有a標簽存在時,可以用實體編碼繞過,因為a標簽的特殊性:可以將實體編碼上傳到數據庫在點擊標簽時才進行解析并且會自動將編碼解析

java&#x73;&#x63;ript:alert('1') #將sc使用實體編碼編碼

3.防御方法

1.黑名單限制

限制關鍵字,script,on,error

2.白名單限制

只允許一些類型通過

3.忽略大小寫

使用strtolower同一轉換為小寫

4.使用編碼

將所有輸入的內容當作文本顯示,沒有特殊含義

三、文件上傳漏洞

1.繞過方式

1.大小寫繞過

后綴有黑名單限制但是忘記忽略大小寫

.pHp .PHP .PhP .PHp
2.雙寫繞過

由于將匹配的字符串轉為空字符,因此可以使用雙寫繞過

.ph(php)p  #將括號中的php匹配成功替換為空字符了
3.php3,phtml繞過

php無法使用但是可能沒有禁止php3后綴,所以可以使用備用類型繞過

.php3
4.空格繞過

首尾空格字符在文件中最后解析會把空格自動清掉,但是輸入空格可能不會被過濾,從而繞過

.php    
5.mime類型繞過

瀏覽器會讀取文件的 擴展名 / 系統注冊信息,然后決定 MIME

可以抓包看到一個content-type字段,后端僅驗證content-type,因此可以直接修改數據包為需要的類型然后上傳

6.前端繞過

前端進行驗證,可以直接將前端的驗證代碼刪除或者修改.

7. .htaccess區域解析配置文件繞過

由于限制了大多數類型文件,但是沒有限制這個特殊文件.htaccess類型,這個文件配置后會解析同目錄下的文件為設置的類型

1.解析所有文件為php:

SetHandler

SetHandler application/x-httpd-php

2.指定后綴名解析為php: AddHandler

指定的后綴名用空格隔開放在最后

AddHandler application/x-httpd-php .php .phtml .html
8. 00截斷繞過

00截斷,在文件名后加一個可以通過的類型使用%00連接,解析時會把00后面的內容刪掉,也就是解析hello.php按照php類型解析

file=hello.php%00.jpg

2.防御方法

1.使用strtolower函數防止大小寫
2.使用白名單限制
3.使用waf限制

四、CSRF和SSRF

1.CSRF(跨站請求偽造)

  • 與XSS的區別

CSRF是跨站請求偽造。它偽造了用戶的請求,并不是用戶的真實意愿,而是通過誘導用戶點擊一些惡意鏈接使用用戶的cookie信息等去執行一些用戶并沒有想執行的操作。

XSS是跨站腳本攻擊。在用戶瀏覽器執行惡意代碼,直接竊取數據或劫持用戶。

二者本質區別 csrf是在用戶登陸的前提下使用用戶的cookie信息執行一些轉賬或者發信息、修改信息其他的類似操作。而xss是用來竊取用戶的cookie信息,只需要用戶點擊

  • CSRF的應用場景

修改密碼,轉賬,修改個人信息等操作

  • CSRF漏洞利用

抓取數據包,找到表單信息,修改表單信息提交到服務器看看是否成功,成功則說明存在CSRF漏洞

  • 成因

Web 應用只依賴 Cookie / Session 里的認證信息來識別用戶身份,而沒有驗證請求本身的來源和合法性

2.SSRF(服務器端跨站請求偽造)

  • 成因

由于服務器提供了從其他服務器獲取數據的功能,比如翻譯的軟件,可以自動從其他服務器下載并獲取數據。

比如從翻譯軟件翻譯一個查ip的網頁,會發現ip不是本機的,實際可能是服務器的,因為這個加載過程是服務器完成的。

3.CSRF與SSRF的區別

最大的區別就是

CSRF是客戶端的,也就是用戶受騙,“莫名不自覺”執行了自己沒想執行的操作

SSRF是服務器端的,也就是服務器受騙,按著攻擊者的想法執行一些危險操作。

五、文件包含和文件讀取漏洞

1.區別

文件包含漏洞可以解析文件執行文件,而文件讀取只會對文件的內容進行讀取,不進行解析。

2.示例

文件讀取,無法解析phpinfo文件,頁面空白,看源碼可以看到

<?php$file=$_GET['file'];
echo fgets(fopen($file,"r"));?>

image-20250827193748870

且源碼寫了多行也只看的見一行.

image-20250827194649032

同一個文件,使用文件包含可以執行解析.

<?php$file=$_GET['file'];
echo include $file;?>

image-20250827194453663
行文件,而文件讀取只會對文件的內容進行讀取,不進行解析。

2.示例

文件讀取,無法解析phpinfo文件,頁面空白,看源碼可以看到

<?php$file=$_GET['file'];
echo fgets(fopen($file,"r"));?>

[外鏈圖片轉存中…(img-l96bh0Un-1756297342382)]

且源碼寫了多行也只看的見一行.

[外鏈圖片轉存中…(img-SGRDaUnS-1756297342383)]

同一個文件,使用文件包含可以執行解析.

<?php$file=$_GET['file'];
echo include $file;?>

[外鏈圖片轉存中…(img-ffHaA7Pl-1756297342383)]

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

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

相關文章

Java中使用Spring Boot+Ollama構建本地對話機器人

目錄結構Ollama是什么安裝 Ollama下載大模型運行模型Java和IDEA版本創建一個springboot項目創建一個簡單的對話接口啟動spring boot流式對話輸出用原生 HTML 打造可交互前端接入 OpenAI、DeepSeek 等云模型&#xff08;可選&#xff09;原文地址傳送門 我是想做一個大模型本地部…

學習設計模式《二十四》——訪問者模式

一、基礎概念 訪問者模式的本質是【預留后路&#xff0c;回調實現】。仔細思考訪問者模式&#xff0c;它的實現主要是通過預先定義好調用的通路&#xff0c;在被訪問的對象上定義accept方法&#xff0c;在訪問者的對象上定義visit方法&#xff1b;然后在調用真正發生的時候&…

Rust 符號體系全解析:分類、應用與設計意圖

Rust 的符號體系是其語法規則、內存安全與類型安全設計的核心載體。每個符號不僅承擔特定功能&#xff0c;更隱含 Rust 對 “安全” 與 “表達力” 的平衡邏輯。本文按功能維度&#xff0c;系統梳理 Rust 中所有常用符號&#xff0c;結合代碼示例與設計背景&#xff0c;提供全面…

神經網絡|(十六)概率論基礎知識-伽馬函數·上

【1】引言 前序學習進程中&#xff0c;對經典的二項分布和正態分布已經有一定的掌握。 今天為學習一種稍顯復雜的分布提前布局一下&#xff0c;學習伽馬函數。 【2】伽馬函數 伽馬函數有兩種經典寫法&#xff0c;一種是積分形式&#xff0c;另一種是無窮乘積形式。 【2.1】…

安全向量模板類SiVector

實現一個安全向量模板類 SiVector&#xff0c;其設計目標是&#xff1a;在保持 std::vector 易用性的基礎上&#xff0c;增強越界訪問的安全性&#xff08;避免崩潰&#xff09;&#xff0c;同時兼容 std::vector 的核心接口和使用習慣。支持嵌套使用&#xff08;如 SiVector&l…

Cloudflare 推出 GenAI 安全工具,守護企業數據

8 月 26 日,Cloudflare 為其企業平臺 Cloudflare One 推出了新的安全功能,幫助企業安全地采用 ChatGPT、Claude 和 Gemini 等生成式 AI 工具。該工具構建為云訪問安全代理 (CASB),通過 API 集成來監控和保護這些 AI 服務,無需安裝設備。 隨著企業對 GenAI 的使用激增——C…

Mac測試端口連接的幾種方式

在 macOS 上測試端口是否開放&#xff0c;可通過以下三種常用方法實現&#xff08;推薦優先使用系統自帶的 nc 命令&#xff0c;簡單高效&#xff09;&#xff1a;方法 1&#xff1a;用系統自帶 nc&#xff08;netcat&#xff09;測試&#xff08;最推薦&#xff09;nc 是 macO…

用PyTorch實現多類圖像分類:從原理到實際操作

引言 圖像分類作為計算機視覺的基石&#xff0c;已深度滲透到我們生活的方方面面——從醫療影像中早期腫瘤的識別、自動駕駛汽車對道路元素的實時檢測&#xff0c;到衛星圖像的地形分析與零售行業的商品識別&#xff0c;其核心都是讓機器學會"看懂"世界并做出分類決…

window安裝python環境

1、確認操作系統類型和位數&#xff0c;明確下載安裝包的版本&#xff0c;示例為&#xff1a;windows&#xff0c;64位環境。 2、登錄python官網下載exe安裝包&#xff0c;下載網址&#xff1a;Download Python | Python.org 找到想要的對應python版本&#xff0c;本次示例下…

用 Streamlit 構建一個簡易對話機器人 UI

在這篇文章中&#xff0c;我將演示如何用 Streamlit 快速構建一個輕量的對話機器人 UI&#xff0c;并通過 LangChain / LangGraph 調用 LLM&#xff0c;實現簡單的對話功能。通過將前端和后端分離&#xff0c;你可以單獨測試模型調用和 UI 顯示。為什么選擇 Streamlit&#xff…

【Redis 進階】Redis 典型應用 —— 緩存(cache)

一、什么是緩存 緩存&#xff08;cache&#xff09;是計算機中的一個經典的概念&#xff0c;在很多場景中都會涉及到。核心思路就是把一些常用的數據放到觸手可及&#xff08;訪問速度更快&#xff09;的地方&#xff0c;方便隨時讀取。 舉例&#xff1a;我需要去高鐵站坐高鐵…

RK3588 Ubuntu22.04 解決eth0未托管問題

在調試rk3588的Ubuntu的時候發現&#xff0c;網絡那里一直顯示eth0未托管&#xff0c;但是聯網功能又是正常的&#xff0c;猜測是某一個配置文件的問題修改如下&#xff1a;打開/etc/NetworkManager/NetworkManager.conf&#xff0c;將managed&#xff0c;修改成true即可然后重…

雷卯針對香橙派Orange Pi 3G-IoT-B開發板防雷防靜電方案

一、應用場景計算機、無線網絡服務器、游戲機、音樂播放器、高清視頻播放器、揚聲器、Android 設備、Scratch 編程平臺二、核心功能參數三、擴展接口詳情雷卯專心為您解決防雷防靜電的問題&#xff0c;有免費實驗室供檢測。開發板資料轉自深圳迅龍軟件。謝謝&#xff01;

Science Robotics 豐田研究院提出通過示例引導RL的全身豐富接觸操作學習方法

人類表現出非凡的能力&#xff0c;可以利用末端執行器&#xff08;手&#xff09;的靈巧性、全身參與以及與環境的交互&#xff08;例如支撐&#xff09;來縱各種大小和形狀的物體。 人類靈活性的分類法包括精細和粗略的作技能。盡管前者&#xff08;精細靈巧性&#xff09;已在…

趣丸游戲招高級業務運維工程師

高級業務運維工程師趣丸游戲 廣州職位描述1、負責公司AI業務線運維工作&#xff0c;及時響應、分析、處理問題和故障&#xff0c;保證業務持續穩定&#xff1b; 2、負責基于分布式、微服務、容器云等復雜業務的全生命周期的穩定性保障&#xff1b; 3、參與設計運維平臺、工具、…

2025通用證書研究:方法論、崗位映射與四證對比

本文基于公開材料與典型招聘描述&#xff0c;對常見通用型或準入型證書做方法論級別的比較&#xff0c;不構成培訓或報考建議&#xff0c;也不涉及任何招生、返現、團購等信息。全文采用統一術語與可復用模板&#xff0c;以減少“經驗之爭”&#xff0c;便于不同背景的讀者獨立…

在WSL2-Ubuntu中安裝Anaconda、CUDA13.0、cuDNN9.12及PyTorch(含完整環境驗證)

WSL 搭建深度學習環境&#xff0c;流程基本上是一樣的&#xff0c;完整細節可參考我之前的博客&#xff1a; 在WSL2-Ubuntu中安裝CUDA12.8、cuDNN、Anaconda、Pytorch并驗證安裝_cuda 12.8 pytorch版本-CSDN博客 之所以記錄下來&#xff0c;是因為CUDA和cuDNN版本升級后&#x…

OpenFOAM中梯度場的復用(caching)和生命期管理

文章目錄OpenFOAM中梯度場的復用(caching)和生命期管理一、緩存機制的目標二、如何實現緩存&#xff08;以 fvc::grad 為例&#xff09;1. 使用 IOobject::AUTO_WRITE 和注冊名2. 示例&#xff1a;fvc::grad 的緩存實現&#xff08;簡化邏輯&#xff09;三、生命期管理是如何實…

【Hot100】貪心算法

系列文章目錄 【Hot100】二分查找 文章目錄系列文章目錄方法論Hot100 之貪心算法121. 買賣股票的最佳時機55. 跳躍游戲45. 跳躍游戲 II763. 劃分字母區間方法論 Hot100 之貪心算法 121. 買賣股票的最佳時機 121. 買賣股票的最佳時機&#xff1a;給定一個數組 prices &#…

電子電氣架構 --- 軟件項目復雜性的駕馭思路

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 做到欲望極簡,了解自己的真實欲望,不受外在潮流的影響,不盲從,不跟風。把自己的精力全部用在自己。一是去掉多余,凡事找規律,基礎是誠信;二是…