dvwa-Weak Session IDs

用戶訪問服務器的時候,一般服務器都會分配一個身份證 session id 給用戶,用于標識。用戶拿到 session id 后就會保存到 cookies 上,之后只要拿著 cookies 再訪問服務器,服務器就知道你是誰了。
但是 session id 過于簡單就會容易被人偽造。根本都不需要知道用戶的密碼就能訪問,用戶服務器的內容了

LOW

image.png

刷新一次


image.png

cookies 上 dvwaSessionId 上 +1s
源碼

<?php

$html = "";

if ($_SERVER['REQUEST_METHOD'] == "POST") {
    if (!isset ($_SESSION['last_session_id'])) {
        $_SESSION['last_session_id'] = 0;
    }
    $_SESSION['last_session_id']++;
    $cookie_value = $_SESSION['last_session_id'];
    setcookie("dvwaSession", $cookie_value);
}
?>

如果用戶 SESSION中的 last_session_id 不存在就設為 0,如果dvwaSession存在就加一,這樣肯定會造成session不是唯一,引發(fā)沖突

medium

image.png

image.png

源碼

?php

$html = "";

if ($_SERVER['REQUEST_METHOD'] == "POST") {
    $cookie_value = time();
    setcookie("dvwaSession", $cookie_value);
}
?>

明顯就是時間戳,很容易被猜出

high

image.png
image.png

看著像md5 解密一下發(fā)現 和low級別的一樣。。。

源碼

<?php

$html = "";

if ($_SERVER['REQUEST_METHOD'] == "POST") {
    if (!isset ($_SESSION['last_session_id_high'])) {
        $_SESSION['last_session_id_high'] = 0;
    }
    $_SESSION['last_session_id_high']++;
    $cookie_value = md5($_SESSION['last_session_id_high']);
    setcookie("dvwaSession", $cookie_value, time()+3600, "/vulnerabilities/weak_id/", $_SERVER['HTTP_HOST'], false, false);
}

?>

impossible

源碼

<?php

$html = "";

if ($_SERVER['REQUEST_METHOD'] == "POST") {
    $cookie_value = sha1(mt_rand() . time() . "Impossible");
    setcookie("dvwaSession", $cookie_value, time()+3600, "/vulnerabilities/weak_id/", $_SERVER['HTTP_HOST'], true, true);
}
?>

不可能級別使用隨機數+時間戳+固定字符串("Impossible")進行 sha1 運算,作為 session Id,完全就不能猜測到

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容