SQL注入:pikachu靶場中的SQL注入通關

目錄

1、數字型注入(post)

2、字符型注入(get)

3、搜索型注入

4、XX型注入

5、"insert/update"注入

Insert:

update:

6、"delete"注入

7、"http header"注入

8、盲注(base on boolian)

9、盲注(base ontime)

10、寬字節注入


最近在學習SQL注入,這里使用pikachu靶場中的SQL注入來復習+練習一下SQL注入的方法

進入SQL模塊中可以看到有好幾種注入的類型,我們先點擊到概述:

可以看到是這樣介紹SQL注入的:

哦,SQL注入漏洞,可怕的漏洞。
?????在owasp發布的top10排行榜里,注入漏洞一直是危害排名第一的漏洞,其中注入漏洞里面首當其沖的就是數據庫注入漏洞。
一個嚴重的SQL注入漏洞,可能會直接導致一家公司破產!
SQL注入漏洞主要形成的原因是在數據交互中,前端的數據傳入到后臺處理時,沒有做嚴格的判斷,導致其傳入的“數據”拼接到SQL語句中后,被當作SQL語句的一部分執行。 從而導致數據庫受損(被脫褲、被刪除、甚至整個服務器權限淪陷)。

在構建代碼時,一般會從如下幾個方面的策略來防止SQL注入漏洞:
1.對傳進SQL語句里面的變量進行過濾,不允許危險字符傳入;
2.使用參數化(Parameterized Query 或 Parameterized Statement);
3.還有就是,目前有很多ORM框架會自動使用參數化解決注入問題,但其也提供了"拼接"的方式,所以使用時需要慎重!

1、數字型注入(post)

點擊來到第一個模塊這里,可以看到是一個下列選項,選擇不同的id會返回不同的用戶的信息:

但是url中沒有顯示,是POST型的傳參,因此這里我就使用Burpsuite抓包查看,可以看到傳入的id=1返回頁面如下

下面嘗試使用? and 1=1 和 and 1=2測試:

可以看到兩個頁面顯示的不同,說明存在注入點,那么下面就可以嘗試使用聯合查詢,查詢數據庫中的列數和數據庫名稱:

通過多次嘗試就會發現數據庫是兩列的,那么下面查詢數據庫名稱和用戶名稱:

可以看到成功的查詢出了數據名稱和用戶名稱,后面就可以通過information_schema數據庫查詢出數據庫中的表名,列明,數據

2、字符型注入(get)

來到第二關,可以看到是一個輸入框,判斷應該是字符型注入

嘗試輸入輸入查詢一下看看結果,結果如下:

嘗試閉合:

可以看到閉合后報錯了說明是存在注入點的

下面就是判斷列數了:


通過反復嘗試也可以判斷出列數是2列的

下面就可以嘗試對數據庫名稱和用戶名進行注入了:

可以看到成功的查詢出了數據名稱和用戶名稱,后面就可以通過information_schema數據庫查詢出數據庫中的表名,列明,數據

3、搜索型注入

來到搜索注入頁面可以看到也是有一個輸入框讓我們搜索,然后查看提示發現%%,這說明在閉合時需要用到%

嘗試搜索:

嘗試閉合:

可以看到報錯了,并且從報錯信息中可以看到,閉合字符時%,那么下面還是先嘗試判斷數據庫中的列數:

通過多次嘗試就會發現數據庫的列數是3列

那么下面就可以嘗試注入出數據庫名稱和用戶名稱了:

可以看到成功的查詢出了數據名稱和用戶名稱,后面就可以通過information_schema數據庫查詢出數據庫中的表名,列明,數據

4、XX型注入

下面來到了XX型注入這一關,可以看到也是一個輸入框

嘗試查詢:

嘗試閉合:

輸入'可以看到報錯了,這里報錯的信息中可以看到閉合是')

嘗試查詢列數:


通過不斷地嘗試就可以發現數據庫的列數為2列

查詢數據庫名稱和用戶名稱:

可以看到成功的查詢出了數據庫的名稱和用戶名稱

5、"insert/update"注入

來到這一關,可以看到如下頁面,是一個登錄框

首先來復習一年mysql中的insert和update的語法:

  1. INSERT語法:
INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);

其中,table_name是要插入記錄的表名,column1、column2等是表中的列名,value1、value2等是要插入的值。

  1. UPDATE語法:
UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;

其中,table_name是要更新記錄的表名,column1、column2等是要更新的列名和對應的值,condition是更新記錄的條件。

Insert:

既然是insert注入,插入數據,那么一般就在網數據庫新增數據時會使用到,因此我們點擊注入頁面

對該頁面進行抓包嘗試尋找漏洞點:

通過測試發現在username/password/sex/phonenum/email/add/中任意一個變量后面加'都會導致數據庫報錯

那么下面就可以嘗試對數據進行查詢了,但是從上面的操作可以看出來,注冊頁面是沒有sql結果回顯的,而且畢竟也不是select語句,也不能采取聯合查詢注入了。

不過從上一步的操作可以看出來,注冊的時候如果sql語句有問題是會報錯的,因此報錯注入行得通。

這里可以在再回憶一下報錯注入:SQL注入:報錯注入-CSDN博客

下面就可以利用報錯注入,注入出數據庫名稱和用戶:

可以看到成功的注入出了數據庫名稱和用戶名

update:

既然是update,一般在修改信息處,因此這里需要先登錄到系統中才能修改信息,我們先登錄到系統中:

這里登錄那就使用上面剛剛注冊頁面先注冊一個admin用戶唄,登錄完成后的頁面如下:

點擊修改個人信息也就是在數據庫中使用update修改了,我們對修改信息頁面抓包:

可以看到修改信息頁面如上,我們嘗試對可控字段進行閉合:


通過測試可以發現,定義sex,phponenum、add、email四個字段后面添加'都會導致數據庫報錯,都存在SQL注入的風險,因此我們嘗試注入,這里因為還是數據還是沒有回顯,因此使用報錯注入:

可以看到,成功的注入出了數據庫名稱和用戶名

6、"delete"注入

來到這一關可以看到如下頁面,是一個留言板

還是首先來看看Mysql中delete的語法:

DELETE FROM table_name WHERE condition;

其中,table_name是要刪除記錄的表名,condition是刪除記錄的條件。

知道了delete的語法后,我們來看看這一關有什么可疑的地方:

在點擊刪除時抓包查看:

可以看到這里有id,嘗試閉合:

可以看到報錯了,說明可能存在注入,但是嘗試查詢發現無回顯,這里嘗試使用報錯注入注入出數據庫名稱和用戶名稱:

通過多次嘗試就可以看到成功的注入出了數據庫名稱和用戶名稱

7、"http header"注入

來到這一關,可以看到如下頁面時一個登錄框:

這里再介紹一下http header:HTTP頭是HTTP請求或響應的一部分,包含有關請求或響應的元數據,例如發送的內容類型、內容長度、使用的編碼以及其他相關信息。HTTP頭由Web服務器和瀏覽器使用,用于在通過互聯網發送和接收數據的過程中進行通信和交換信息。

知道了http header是啥了后,現在來找找這一關有什么可疑的地方:

(點擊提示,可以看到登錄賬號密碼為admin 123456)

登錄后的頁面:

可以看到頁面顯示出了ip user agent http accept 和端口號,既然可以顯示在頁面那么我們就可以嘗試對其進行注入看是否可以從將數據回顯到這些字段中

user agent:

accept:

可以看到對這兩個字段進行閉合都成功報錯了,都可以注入,嘗試注入數據庫:

可以看到兩個字段都成功的注入出了數據庫?

8、盲注(base on boolian)

來到這一關,可以看到是一個查詢框

這一關怎么閉合,數據庫都無法報錯,因此之前的聯合查詢,報錯注入都無法使用了,這里需要使用SQL盲注

可以看到輸入用戶名存在是返回用戶的信息,不存在時返回“您輸入的username不存在,請重新輸入”,可以利用這一點來進行布爾盲注

可以判斷數據庫長度延時一下:

通過不同的顯示可以知道數據庫的長度是7

后面就可以通過盲注來注入出數據庫名稱和其他數據

9、盲注(base ontime)

來到這一關可以看到,還是一個查詢框

這里嘗試輸入用戶名查詢,發現無論輸入任何的用戶都只會輸出:

因此這里布爾盲注也無法使用了,只能使用時間盲注了,就是通過不同的判斷條件來判斷頁面是否延時顯示來判斷是否存在注入點:

admin' and if(1=1,sleep(2),1)#

后面就可以通過盲注來注入出數據庫名稱和其他數據

10、寬字節注入

來到SQL注入的最后一關,是寬字節注入,這個是“中文”限定的SQL注入方法

可以看到頁面如下,依舊是一個查詢框

不知道寬字節注入是什么的小伙伴可以參考:SQL注入:寬字節注入_sql寬字節注入-CSDN博客

簡單來說:

一個gbk編碼漢字,占用2個字節。

一個utf-8編碼的漢字,占用3個字節。

addslashes函數的作用就是讓'變成\',讓引號變得不再是原本的“單引號”,沒有了之前的語義,而是變成了一個字符。那么我們現在要做的就是想辦法將'前面的\給它去除掉,那就是在前面加上一個字符讓其與吼吼的轉義字符組合成一個漢字就逃過了addslashes函數的過濾

那么在pikachu靶場中看一看:
嘗試進行閉合發現滅有報錯,這時因為我們輸入的'被過濾了

那么現在嘗試“吃掉”\:

可與看到,利用寬字節成功的注入出了數據庫名稱和用戶名

到此,pikachu靶場中的SQL注入相關知識就學習完畢了!

參考鏈接:pikachu SQL注入 (皮卡丘漏洞平臺通關系列)_pikachusql注入闖關hackbar-CSDN博客

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

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

相關文章

C#實現KMP算法,在長字符串中找到第一個符合要求的子字符串

KMP(Knuth-Morris-Pratt)算法是一種高效的字符串搜索算法,它可以在一個文本字符串(Text)中搜索一個詞(Pattern),時間復雜度為O(nm),其中n是文本字符串的長度,…

vite前端UI框架使用詳解(2024-05-24)

Vite(發音同 "veet")是一種新型前端構建工具,能夠顯著提升前端開發體驗。它主要由兩部分組成: 一個開發服務器,它基于原生的ES模塊提供了豐富的內建功能,如速度快到驚人的 模塊熱更新&#xff08…

【Linux安全】Firewalld防火墻

目錄 一.Firewalld概述 二.Firewalld和iptables的關系 1.firewalld和iptables的聯系 2.firewalld和iptables的區別 三.Firewalld區域 1.概念 2.九個區域 3.區域介紹 4.Firewalld數據處理流程 四.Firewalld-cmd命令行操作 1.查看 2.增加 3.刪除 4.修改 五.Firewa…

arping 一鍵檢測網絡設備連通性(KALI工具系列二)

目錄 1、KALI LINUX簡介 2、arping工具簡介 3、在KALI中使用arping 3.1 目標主機IP(win) 3.2 KALI的IP 4、操作示例 4.1 IP測試 4.2 ARP測試 4.3 根據存活情況返回 5、總結 1、KALI LINUX簡介 Kali Linux 是一個功能強大、多才多藝的 Linux 發…

表現層框架設計之使用XML設計表現層

使用XML設計表現層,統一Web Form與Windows Form的外觀。 1.XML(可擴展標記語言) XML(可擴展標記語言)與HTML類似,是一種標記語言。與主要用于控制數據的顯示和外觀的HTML標記不同,XML標記用于定…

PostgreSQL的擴展(extensions)-常用的擴展之pg_rman

PostgreSQL的擴展(extensions)-常用的擴展之pg_rman pg_rman 是 PostgreSQL 社區提供的一個備份和恢復管理工具。它能夠簡化和自動化 PostgreSQL 數據庫的備份和恢復過程,并支持全量備份、增量備份和差異備份。pg_rman 提供了方便的命令行接…

【機器學習與大模型】驅動下的電子商務應用

摘要: 隨著信息技術的飛速發展,電子商務已經成為當今商業領域中最為活躍和重要的部分之一。而機器學習和大模型的出現,為電子商務帶來了新的機遇和挑戰。本文深入探討了機器學習與大模型在電子商務中的應用,包括個性化推薦、精準營…

Java 18:開啟Java平臺的新紀元

Java 18:探索Java平臺的最新飛躍 隨著Java 18的發布,Java平臺再次證明了其不斷創新和適應現代軟件開發需求的能力。作為長期支持(LTS)版本,Java 18不僅帶來了性能上的提升,還引入了一系列令人興奮的新特性…

基于雙向長短期記憶 Bi-LSTM 對消費者投訴進行多類分類

前言 系列專欄:【深度學習:算法項目實戰】?? 涉及醫療健康、財經金融、商業零售、食品飲料、運動健身、交通運輸、環境科學、社交媒體以及文本和圖像處理等諸多領域,討論了各種復雜的深度神經網絡思想,如卷積神經網絡、循環神經網絡、生成對抗網絡、門控循環單元、長短期記…

CSS transform 三大屬性 rotate、scale、translate

transform 瀏覽器支持定義和用法translate位移函數rotate旋轉函數scale縮放函數 瀏覽器支持 表格中的數字表示支持該屬性的第一個瀏覽器版本號。 緊跟在 -webkit-, -ms- 或 -moz- 前的數字為支持該前綴屬性的第一個瀏覽器版本號。 定義和用法 transform 屬性向元素應用 2D…

在chrome中查找和驗證xpath

1、快速獲取XPath表達式 按F12打開chrome瀏覽器的開發者模式,點擊選擇光標,選擇頁面上的元素位置,在控制臺右鍵選擇Copy XPath,表達式就復制到粘貼板中了。 獲取到的xpath路徑://*[id"hotsearch-content-wrapper…

iOS App上架全流程及審核避坑指南

App Store作為蘋果官方的應用商店,審核嚴格周期長一直讓用戶頭疼不已,很多app都“死”在了審核這一關,那我們就要放棄iOS用戶了嗎?當然不是!本期我們從iOS app上架流程開始梳理,詳細了解下iOS app上架的那些…

6.1 if語句

計算機語言和人類語言類似,人類語言是為了解決人與人之間交流的問題,而計算機語言是為了解決程序員與計算機之間交流的問題。程序員編寫的程序就是計算機的控制指令,控制計算機的運行。借助于編譯工具,可以將各種不同的編程語言的…

基礎入門三大核心之HTML篇:WebP格式圖像全面解析 —— 起源、優勢、兼容性及在線壓縮方法

基礎入門三大核心之HTML篇:WebP格式圖像全面解析 —— 起源、優勢、兼容性及在線壓縮方法 歡迎來到我的博客,很高興能夠在這里和您見面!希望您在這里可以感受到一份輕松愉快的氛圍,不僅可以獲得有趣的內容和知識,也可以…

馮喜運:5.24黃金今日能否回調?日內國際黃金美原油操作策略

【黃金消息面分析】:在過去的半個世紀里,美國國債作為買入持有的投資手段,輕松超越了黃金。然而,如今債券作為終極避險資產的地位正面臨著前所未有的挑戰。傳統上,投資者將美國國債視為一種超安全的投資,因…

Java高級面試精粹:問題與解答集錦(二)

Java面試問題及答案 1. 什么是Java內存模型(JMM)?它的作用是什么? 答案: Java內存模型(JMM)定義了Java虛擬機(JVM)在計算機內存中的工作方式,包括程序計數器…

【源碼+文檔+講解】垃圾分類系統SSM

目 錄 摘 要 前 言 第1章 概述 1.1 研究背景 1.2 研究目的 1.3 研究內容 4 第二章 開發技術介紹 5 2.1Java技術 6 2.2 Mysql數據庫 6 2.3 B/S結構 7 2.4 SSM框架 8 第三章 系統分析 3.1 可行性分析 3.1.1 技術可行性 3.1.2 經濟可行性 3.1.3 操作可行性 3.2 系統…

Word讓標題3現形

1 2這個玩意兒是管理樣式(你找得我好慘啊啊啊啊) 3點推薦

MINLP(Mixed-Integer Nonlinear Programming,混合整數非線性規劃)

MINLP(Mixed-Integer Nonlinear Programming,混合整數非線性規劃)問題是一類包含整數變量和連續變量的非線性優化問題。它結合了整數規劃(IP)和非線性規劃(NLP)的特征,因而比單純的整…

基于Vue的圖片文件上傳與壓縮組件的設計與實現

摘要 隨著前端技術的發展,系統開發的復雜度不斷提升,傳統開發方式將整個系統做成整塊應用,導致修改和維護成本高昂。組件化開發作為一種解決方案,能夠實現單獨開發、單獨維護,并能靈活組合組件,從而提升開…