dvwa3——CSRF

LOW:

先嘗試change一組密碼:123456

修改成功,我們觀察上面的url代碼

http://localhost/DVWA/vulnerabilities/csrf/?password_new=123456&password_conf=123456&Change=Change#

將password_new部分與password_conf部分改成我們想要的密碼:4321

http://localhost/DVWA/vulnerabilities/csrf/?password_new=4321&password_conf=4321&Change=Change#

新建一個頁面打開,發現密碼修改成功

?MEDIUM:

嘗試同樣的方法發現請求失敗

并且上方跳出來這個?,第一行說請求頭缺失,請求頭記錄著

查看這一關的源碼并與low的做對比 ,多出來的這個if判斷條件應該是判斷當前的訪問請求是否更換頁面了,如果不是,就不執行請求

用bp抓包原來的請求,可以注意到這里有一個referer


***Referer***:

是http請求頭中的一個字段,作用是指示當前請求的網頁的來源,也就是說,?referer后面的內容會告訴服務器這個請求來自于哪個頁面或者url


在url里面像low一樣修改成我們想要的密碼,新起一個頁面,bp抓包,抓到這些

send to repeater,添加如下代碼

Referer:localhost

render!修改成功!!!

HIGH:

我們剛才改的密碼是1111,這一級我們要把它改成0000

先提交一個新密碼hhhh,并且bp抓包,抓到這些,發現這一關有了token驗證

send to intreuder,和第一關一樣,先clear,再把三個參數add進去,攻擊方式選擇Pithchfork

然后去Payloads,在payloas setting里add進我們要修改的密碼,防止token失效,我們多加幾組

然后和第一關一樣,遞歸找token,先在資源池resoource pool里設置單線程

?settings里(有的版本的dp是options)

回payloads,加上

Start attack!!!!!!!!!!

關閉bp,去第一關,輸入用戶名和密碼

登陸成功!!!!!!!!!

IMPOSSIBLE:

?我們觀察一下源碼


CSRF Source
vulnerabilities/csrf/source/impossible.php<?phpif( isset( $_GET[ 'Change' ] ) ) {// Check Anti-CSRF tokencheckToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );// Get input$pass_curr = $_GET[ 'password_current' ];$pass_new  = $_GET[ 'password_new' ];$pass_conf = $_GET[ 'password_conf' ];// Sanitise current password input$pass_curr = stripslashes( $pass_curr );$pass_curr = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $pass_curr ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));$pass_curr = md5( $pass_curr );// Check that the current password is correct$data = $db->prepare( 'SELECT password FROM users WHERE user = (:user) AND password = (:password) LIMIT 1;' );$data->bindParam( ':user', dvwaCurrentUser(), PDO::PARAM_STR );$data->bindParam( ':password', $pass_curr, PDO::PARAM_STR );$data->execute();// Do both new passwords match and does the current password match the user?if( ( $pass_new == $pass_conf ) && ( $data->rowCount() == 1 ) ) {// It does!$pass_new = stripslashes( $pass_new );$pass_new = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $pass_new ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));$pass_new = md5( $pass_new );// Update database with new password$data = $db->prepare( 'UPDATE users SET password = (:password) WHERE user = (:user);' );$data->bindParam( ':password', $pass_new, PDO::PARAM_STR );$data->bindParam( ':user', dvwaCurrentUser(), PDO::PARAM_STR );$data->execute();// Feedback for the userecho "<pre>Password Changed.</pre>";}else {// Issue with passwords matchingecho "<pre>Passwords did not match or current password incorrect.</pre>";}
}// Generate Anti-CSRF token
generateSessionToken();?>

優化地方:

  1. 使用了pdo預處理:我的理解是提前規劃好了傳遞數據的模板,只從用戶的輸入中提取數據,而其輸入不能當成代碼處理,比如 'or '1'=1,只能被當初密碼
  2. checktoken
  3. mysqli_real_escape_string 轉義
  4. 原密碼驗證,攻擊者很難知道
  5. MD5加密,好像需要彩虹表解密,還不了解

綜上,無法突破

??? 完結撒花!!????

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

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

相關文章

Linux 中常見的安全與權限機制

Linux 中常見的安全與權限機制主要包括以下幾類&#xff0c;從文件系統權限到系統級訪問控制&#xff0c;構建了多層次的安全保障體系。 &#x1f510; 一、文件權限與用戶管理 1. 基本權限&#xff08;rwx&#xff09; r&#xff08;read&#xff09;&#xff1a;讀取文件內…

CSS篇-3

1. CSS 中哪些樣式可以繼承&#xff1f;哪些不可以繼承&#xff1f; 可繼承的樣式&#xff1a; 與字體相關的樣式&#xff0c;如&#xff1a;font-size、font-family、color 列表樣式&#xff1a;list-style&#xff08;如 UL、OL 的 list-style-type&#xff09; 不可繼承…

計算機網絡物理層基礎練習

第二章 物理層 填空題 從通信雙方信息交互的方式來看&#xff0c;通信的三種基本方式為單工、半雙工和全雙工。其中&#xff0c;單工數據傳輸只支持數據在一個方向上傳輸&#xff0c;全雙工數據傳輸則允許數據同時在兩個方向上傳輸。最基本的帶通調制方法包括三種&#xff1a…

Redis7底層數據結構解析

redisObject 在 Redis 的源碼中&#xff0c;Redis 會將底層數據結構&#xff08;如 SDS、hash table、skiplist 等&#xff09;統一封裝成一個對象&#xff0c;這個對象叫做 redisObject&#xff0c;也簡稱 robj。 typedef struct redisObject {unsigned type : 4; // 數…

華為OD機試_2025 B卷_靜態掃描(Python,100分)(附詳細解題思路)

題目描述 靜態掃描可以快速識別源代碼的缺陷&#xff0c;靜態掃描的結果以掃描報告作為輸出&#xff1a; 1、文件掃描的成本和文件大小相關&#xff0c;如果文件大小為N&#xff0c;則掃描成本為N個金幣 2、掃描報告的緩存成本和文件大小無關&#xff0c;每緩存一個報告需要…

【Java】在 Spring Boot 中連接 MySQL 數據庫

在 Spring Boot 中連接 MySQL 數據庫是一個常見的任務。Spring Boot 提供了自動配置功能&#xff0c;使得連接 MySQL 數據庫變得非常簡單。以下是詳細的步驟&#xff1a; 一、添加依賴 首先&#xff0c;確保你的pom.xml文件中包含了 Spring Boot 的 Starter Data JPA 和 MySQ…

基于51單片機的音樂盒鍵盤演奏proteus仿真

地址&#xff1a; https://pan.baidu.com/s/1tZCAxQQ7cvyzBfztQpk0UA 提取碼&#xff1a;1234 仿真圖&#xff1a; 芯片/模塊的特點&#xff1a; AT89C52/AT89C51簡介&#xff1a; AT89C51 是一款常用的 8 位單片機&#xff0c;由 Atmel 公司&#xff08;現已被 Microchip 收…

Android Native 之 adbd進程分析

目錄 1、adbd守護進程 2、adbd權限降級 3、adbd命令解析 1&#xff09;adb shell 2&#xff09;adb root 3&#xff09;adb reboot 4、案例 1&#xff09;案例之實現不需要執行adb root命令自動具有root權限 2&#xff09;案例之實現不需要RSA認證直接能夠使用adb she…

C語言進階--動態內存管理

學習數據結構重要的三個部分&#xff1a;指針、結構體、動態內存管理&#xff08;malloc、calloc、realloc、free&#xff09;。 1.為什么存在動態內存分配&#xff1f; 1.空間開辟大小是固定的&#xff1b; 2.數組在聲明時&#xff0c;必須指定數組的長度&#xff0c;它所需…

C# 密封類和密封方法

密封(sealed)是C#中用于限制繼承和多態行為的關鍵字&#xff0c;它可以應用于類和方法&#xff0c;提供了一種控制繼承層次的方式。 密封類 特點 使用 sealed 關鍵字修飾的類密封類不能被其他類繼承&#xff0c;但可以繼承其他類或接口主要用于防止派生所有結構(struct)都是…

thinkpad T-440p 2025.05.31

thinkpad T-440p 2025.05.31 老了退休了&#xff0c;說起來真的可惡現在筆記本的設計師&#xff0c;只有固態硬盤了

WPS自動換行

換行前 換行后 快捷鍵 第一步&#xff1a;啟用「自動換行」功能 選中目標單元格/區域&#xff1a;點擊需要設置的單元格&#xff08;或拖動選中多個單元格&#xff09;。開啟自動換行&#xff08;3種方式任選&#xff09;&#xff1a; 快捷按鈕&#xff1a;在頂部菜單欄點擊「…

cuda_fp8.h錯誤

現象&#xff1a; cuda_fp8.h錯誤 原因&#xff1a; CUDA Toolkit 小于11.8,會報fp8錯誤&#xff0c;因此是cuda工具版本太低。通過nvcc --version查看 CUDA Toolkit 是 NVIDIA 提供的一套 用于開發、優化和運行基于 CUDA 的 GPU 加速應用程序的工具集合。它的核心作用是讓開發…

【TTS】基于GRPO的流匹配文本到語音改進:F5R-TTS

論文地址&#xff1a;https://arxiv.org/abs/2504.02407v3 摘要 我們提出了F5R-TTS&#xff0c;這是一種新穎的文本到語音(TTS)系統&#xff0c;它將群體相對策略優化(GRPO)集成到基于流匹配的架構中。 通過將流匹配TTS的確定性輸出重新表述為概率高斯分布&#xff0c;我們的方…

頭歌java課程實驗(Java面向對象 - 包裝類)

第1關&#xff1a;基本數據類型和包裝類之間的轉換 任務描述 本關任務&#xff1a;實現基本數據類型與包裝類之間的互相轉換。 相關知識 為了完成本關任務&#xff0c;你需要掌握&#xff1a; 1.什么是包裝類&#xff1b; 2.怎么使用包裝類。 什么是包裝類 在JAVA中&#x…

實現一個免費可用的文生圖的MCP Server

概述 文生圖模型為使用 Cloudflare Worker AI 部署 Flux 模型&#xff0c;是參照視頻https://www.bilibili.com/video/BV1UbkcYcE24/?spm_id_from333.337.search-card.all.click&vd_source9ca2da6b1848bc903db417c336f9cb6b的復現Cursor MCP Server實現是參照文章https:/…

ES6 深克隆與淺克隆詳解:原理、實現與應用場景

ES6 深克隆與淺克隆詳解&#xff1a;原理、實現與應用場景 一、克隆的本質與必要性 在 JavaScript 中&#xff0c;數據分為兩大類型&#xff1a; 基本類型&#xff1a;Number、String、Boolean、null、undefined、Symbol、BigInt引用類型&#xff1a;Object、Array、Functio…

新聞數據加載(鴻蒙App開發實戰)

本案例基于ArkTS的聲明式開發范式&#xff0c;介紹了數據請求和onTouch事件的使用。包含以下功能&#xff1a; 數據請求。列表下拉刷新。列表上拉加載。 網絡數據請求需要權限&#xff1a;ohos.permission.INTERNET 一、案例效果截圖 操作說明&#xff1a; 點擊應用進入主頁…

辦公效率王Word批量轉PDF 50 +文檔一鍵轉換保留原格式零錯亂

各位辦公小能手們&#xff0c;我跟你們說啊&#xff01;在辦公的時候&#xff0c;咱經常會碰到要把一堆Word文檔轉成PDF格式的情況&#xff0c;比如說要統一文件格式、保護文檔內容或者方便分享啥的。這時候&#xff0c;就需要用到Word批量轉換成PDF的軟件啦。下面我就給你們好…

一張Billing項目的流程圖

流程圖 工作記錄 2016-11-11 序號 工作 相關人員 1 修改Payment Posted的導出。 Claim List的頁面加了導出。 Historical Job 加了Applied的顯示和詳細。 郝 識別引擎監控 Ps (iCDA LOG :剔除了160篇ASG_BLANK之后的結果): LOG_File 20161110.txt BLANK_CDA/ALL 45/10…