zoukankan      html  css  js  c++  java
  • weak_session_id

    weak_session id

    知识点

    用户访问服务器的时候,一般服务器都会分配一个身份证 session id 给用户,用于标识。用户拿到 session id 后就会保存到 cookies 上,之后只要拿着 cookies 再访问服务器,服务器就知道你是谁了。

    但是 session id 过于简单就会容易被人伪造。根本都不需要知道用户的密码就能访问,用户服务器的内容了。

    low


    显然这样构造session是不行的,一眼就能看出来是按从1,2,3开始构造,毫无隐蔽性,可以进行伪造session,不要登录都能进去别人的页面

    源码

    <?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 的冲突也太多了吧,都已经不是唯一了。

    medium


    session格式是时间戳,但是不理解的是既然格式是时间戳,这么多时间,怎么会知道用户点击的时间,不知道时间,也就无法伪造了啊,希望哪位大佬看到指点一下

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

    high


    发现长度是32位,猜测是md5加密,去cmd5解密一下,发现是1,2,3之类的加密,我们就可以伪造了

    <?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加密下,无规律可循,是随机的,无法进行伪造,并且进行sha1解密也解密不出

    参考大佬博客

  • 相关阅读:
    【7.19 graphshortestpath graphallshortestpaths函数】matlab 求最短路径函数总结
    【7.18 灾情巡视路线代码】
    【7.18总结】KM算法
    【7.17总结】 匈牙利算法(二分图最大匹配)
    动态规划 多段图最短路 有向图
    matlab 单元最短路 Dijkstra算法 无向图
    hdu 3536【并查集】
    博弈随笔
    AtCoder Regular Contest 094 D Worst Case【思维题】
    CODE FESTIVAL 2017 qual B C 3 Steps(补题)
  • 原文地址:https://www.cnblogs.com/NineOne/p/13766945.html
Copyright © 2011-2022 走看看