zoukankan      html  css  js  c++  java
  • CTF web之旅 3

    error_reporting(0);// 关闭错误报告
    session_start();//启动会话
    require('./flag.php');
    if(!isset($_SESSION['nums'])){//isset() — 检测nums变量是否设置。
      $_SESSION['nums'] = 0;
      $_SESSION['time'] = time();//返回当前时间的 Unix 时间戳
      $_SESSION['whoami'] = 'ea';
    }
    
    if($_SESSION['time']+120<time()){
      session_destroy();//session_destroy — 销毁一个会话中的全部数据 会话开启时间为两分钟
    }//120s后会话结束
    
    $value = $_REQUEST['value'];
    $str_rand = range('a', 'z');//range创建一个包含从 "a" 到 "z" 之间的元素范围的数组
    $str_rands = $str_rand[mt_rand(0,25)].$str_rand[mt_rand(0,25)];//mt_rand() 使用 Mersenne Twister 算法返回0到25之间的随机整数。$str_rand[mt_rand(0,25)]返回"a" 到 "z"之间任意字母。$str_rand[mt_rand(0,25)].$str_rand[mt_rand(0,25)]是两任意字母相连
    
    if($_SESSION['whoami']==($value[0].$value[1]) && substr(md5($value),5,4)==0){//substr(string,start,length)。===是包括变量值与类型完全相等。==只是比较两个数的值是否相等,由于substr是字符串,和数字比较的时候会强制转化成数字0,自然和0相等。

    利用md5函数不能对数组进行处理,所以传数组
    $_SESSION['nums']++; $_SESSION['whoami'] = $str_rands; echo $str_rands; } if($_SESSION['nums']>=10){//循环10次,第十一次输出flag echo $flag; } show_source(__FILE__); ?>

    整个代码审计完后给value不断的传入参数即可

    第十一次得到flag

    flag{f3e2b688-8e5c-460c-87c6-535491409c22}

  • 相关阅读:
    ES数据库重建索引——Reindex(数据迁移)
    ES数据库搜索
    Elasticsearch及相关插件的安装
    初识ES数据库
    Oracle数据库(二)
    Oracle数据库(一)
    DBUtils和连接池
    动态页面技术(EL/JSTL)
    Istio安装
    idea正则替换下划线为驼峰
  • 原文地址:https://www.cnblogs.com/akger/p/14348768.html
Copyright © 2011-2022 走看看