亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

DVWA下的CSRF通關是怎樣的

發布時間:2021-12-16 18:12:23 來源:億速云 閱讀:128 作者:柒染 欄目:網絡管理

DVWA下的CSRF通關是怎樣的,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

CSRF跨站點請求偽造(Cross—Site Request Forgery):

跟XSS攻擊一樣,存在巨大的危害性,你可以這樣來理解:
攻擊者盜用了你的身份,以你的名義發送惡意請求,對服務器來說這個請求是完全合法的,但是卻完成了攻擊者所期望的一個操作,比如以你的名義發送郵件、發消息,盜取你的賬號,添加系統管理員,甚至于購買商品、虛擬貨幣轉賬等。 如下:其中Web A為存在CSRF漏洞的網站,Web B為攻擊者構建的惡意網站,User C為Web A網站的合法用戶。

CSRF攻擊攻擊原理及過程如下:

1. 用戶C打開瀏覽器,訪問受信任網站A,輸入用戶名和密碼請求登錄網站A;

2.在用戶信息通過驗證后,網站A產生Cookie信息并返回給瀏覽器,此時用戶登錄網站A成功,可以正常發送請求到網站A;

3. 用戶未退出網站A之前,在同一瀏覽器中,打開一個TAB頁訪問網站B;

4. 網站B接收到用戶請求后,返回一些攻擊性代碼,并發出一個請求要求訪問第三方站點A;

5.  瀏覽器在接收到這些攻擊性代碼后,根據網站 B 的請求,在用戶不知情的情況下攜帶 Cookie 信息,向網站 A 發出請求。網站 A 并不知道該請求其實是由 B 發起的,所以會根據用戶 C 的 Cookie 信息以 C 的權限處理該請求,導致來自網站 B 的惡意代碼被執行。

與XSS的區別:

XSS是通過修改頁面Javascript等代碼后,發給用戶從而實現盜取cookie信息,之后利用cookie進行登陸網站等操作。非法操作是黑客。
CSRF并沒有盜取cookie信息,而是通過用戶直接利用cookie進行操作。非法操作并不是黑客,而是用戶本身。

1、low級別

<?php

if( isset( $_GET[ 'Change' ] ) ) {
// Get input
$pass_new  = $_GET[ 'password_new' ];
$pass_conf = $_GET[ 'password_conf' ];

// Do the passwords match?
if( $pass_new == $pass_conf ) {
// They do!
$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 the database
$insert = "UPDATE `users` SET password = '$pass_new' WHERE user = '" . dvwaCurrentUser() . "';";
$result = mysqli_query($GLOBALS["___mysqli_ston"],  $insert ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );

// Feedback for the user
echo "<pre>Password Changed.</pre>";
}
else {
// Issue with passwords matching
echo "<pre>Passwords did not match.</pre>";
}

((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res);
}

?>

可以看到,源碼中的mysql_real_escape_string() 函數有防護sql注入的作用,然后就只進行了$pass_new == $pass_conf判斷,沒有進行任何的驗證。

在新密碼和確認密碼之處填寫123456

DVWA下的CSRF通關是怎樣的

burp suite抓包發現,通過get請求執行

DVWA下的CSRF通關是怎樣的

http://172.21.98.85/DVWA-master/vulnerabilities/csrf/?password_new=123456&password_conf=123456&Change=Change#

根據上面的url,進行構造payload:

http://172.21.98.85/DVWA-master/vulnerabilities/csrf/?password_new=test&password_conf=test&Change=Change#

這樣的payload,一般人都可以看出來存在陷進,往往不會去點擊,因此我們還需要進一步偽裝,把它縮短。

DVWA下的CSRF通關是怎樣的

DVWA下的CSRF通關是怎樣的

得到一個短的url:http://r6d.cn/9rGy,提醒一句,以后但凡看見很短的url,然后以很不常見的格式出現,千萬別著急點擊瀏覽。

DVWA下的CSRF通關是怎樣的

現在的密碼已經變成test,不再是123456。

我們還可以編輯一個頁面,填好payload,等正常用戶瀏覽訪問就執行了。

DVWA下的CSRF通關是怎樣的

后綴改成.html.就行了。

DVWA下的CSRF通關是怎樣的

真實情況下,這個html文件的表象應該具備各種誘惑力,例如,如何一夜暴富、xxx照等等,讓你情不自禁的想去瀏覽訪問。

DVWA下的CSRF通關是怎樣的

正當你想開噴時,說好的驚喜呢,怎么是404,哈哈,但其實你已經將你的密碼從test修改為password了。

DVWA下的CSRF通關是怎樣的

2、medium

<?php

if( isset( $_GET[ 'Change' ] ) ) {
// Checks to see where the request came from
if( stripos( $_SERVER[ 'HTTP_REFERER' ] ,$_SERVER[ 'SERVER_NAME' ]) !== false ) {
// Get input
$pass_new  = $_GET[ 'password_new' ];
$pass_conf = $_GET[ 'password_conf' ];

// Do the passwords match?
if( $pass_new == $pass_conf ) {
// They do!
$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 the database
$insert = "UPDATE `users` SET password = '$pass_new' WHERE user = '" . dvwaCurrentUser() . "';";
$result = mysqli_query($GLOBALS["___mysqli_ston"],  $insert ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );

// Feedback for the user
echo "<pre>Password Changed.</pre>";
}
else {
// Issue with passwords matching
echo "<pre>Passwords did not match.</pre>";
}
}
else {
// Didn't come from a trusted source
echo "<pre>That request didn't look correct.</pre>";
}

((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res);
}

?>

先看看里面幾個重要的函數

eregi()函數: 匹配符合條件的字符串,已經被preg_match() 替代,加i不區分大小寫。
stripos函數:返回字符串在另一字符串中第一次出現的位置,如果沒有找到字符串則返回 FALSE。
$_SERVER['HTTP_REFERER'] #鏈接到當前頁面的前一頁面的 URL 地址。
$_SERVER['SERVER_NAME'] #當前運行腳本所在服務器主機的名稱。

同樣的內容,換成1.html

DVWA下的CSRF通關是怎樣的

DVWA下的CSRF通關是怎樣的

DVWA下的CSRF通關是怎樣的

但是實際上沒修改完成,因為這個級別的增加了Referer認證,那么將http包頭的Referer參數的值中包含主機名就行了。

3、High級別

先放棄,這個token值我一直繞不過去,表示先放棄了,大概繞過的思路知道就行,不求甚解!

4、mpossible級別

<?php 

if( isset( $_GET[ 'Change' ] ) ) { 
// Check Anti-CSRF token 
checkToken( $_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 = mysql_real_escape_string( $pass_curr ); 
$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 = mysql_real_escape_string( $pass_new ); 
$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 user 
echo "<pre>Password Changed.</pre>"; 

else { 
// Issue with passwords matching 
echo "<pre>Passwords did not match or current password incorrect.</pre>"; 



// Generate Anti-CSRF token 
generateSessionToken(); 

?>

也是采用PDO技術防護了,根據現實情況,一般防護csrf的辦法最常見的就是增加原始密碼驗證,短信驗證、驗證碼驗證,這樣基本就很難進行scrf攻擊了。

看完上述內容,你們掌握DVWA下的CSRF通關是怎樣的的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節
推薦閱讀:
  1. dvwa使用
  2. CI的CSRF的改造

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

会东县| 安庆市| 靖江市| 呼和浩特市| 弥渡县| 公安县| 保康县| 清流县| 石首市| 丰台区| 阳城县| 醴陵市| 潍坊市| 南丰县| 江门市| 绍兴市| 广灵县| 曲周县| 永胜县| 襄樊市| 灵石县| 融水| 普格县| 文成县| 玉屏| 河津市| 东源县| 阿瓦提县| 翁源县| 武安市| 界首市| 铁力市| 黄冈市| 衡南县| 石渠县| 昌都县| 万源市| 巴青县| 临洮县| 龙胜| 嵩明县|