• 备份是个好习惯


    备份是个好习惯

    http://123.206.87.240:8002/web16/

    通过提示 关键词 ’备份‘ 可以联想到 →  备份文件

    备份文件一般都是.bak结尾的

    用工具扫一下

    这里推荐大佬的工具  yihangwang/SourceLeakHacker

    https://git.coding.net/yihangwang/SourceLeakHacker.git

     可以看到index.php.bak

    访问一下试试

     

    有一个bak备份文件 ,不多解释了,下载后打开

     1 <?php
     2 /**
     3  * Created by PhpStorm.
     4  * User: Norse
     5  * Date: 2017/8/6
     6  * Time: 20:22
     7 */
     8 
     9 include_once "flag.php";
    10 ini_set("display_errors", 0);  //in_set 设置指定配置选项的值
    11 $str = strstr($_SERVER['REQUEST_URI'], '?');   //strstr 截取字符串
    12 $str = substr($str,1);    // 返回字符串的一部分  1为字符串总数的返回开始位
    13 $str = str_replace('key','',$str);  //在$str 中替换  key  为  ''
    14 parse_str($str); //把字符串解析到变量里 这里可以这么理解字符串为key1=1,key2=2 → $key=1;$key2=2
    15 echo md5($key1);
    16 
    17 echo md5($key2);
    18 if(md5($key1) == md5($key2) && $key1 !== $key2){
    19     echo $flag."取得flag";
    20 }
    21 ?>

    11行  strstr 获得URI从'?'往后(包括'?')的字符串         stristr 同strstr用法一样,不区分大小写

    12行  substr 去掉'?'

    13行  str_replace 把字符串中的'key'替换为空可以使用类似这样的语句:kkeyey 处理

    14行  parse_str 把字符串解析到变量中

    end 最后需要得到key1,key2不相等而二者md5相等,可以利用php弱类型比较绕过

    php弱类

    https://www.cnblogs.com/Mrsm1th/p/6745532.html

    https://cloud.tencent.com/developer/article/1046701

     

     

     

     

     


    这里稍微提一下php弱类

    首先,我们一般说php变量类型8种

    标量类型:布尔boolean,整形integer,浮点float,字符string

    复杂类型:数组array,对象object

    特殊类型:资源resource,空null

    与别的语言不同,php是一个弱类型的语言

    ==表示的是等于 ,只要数值等于就可以了,类型无所谓的

    就是说上面列举的那些类型 之间相互比较  只看值就行了 不用看类型

    php弱类型语言总的类型判断

    php一个数字和一个字符串进行比较或者进行运算时,PHP会把字符串转换成数字再进行比较。

    PHP转换的规则的是:若字符串以数字开头,则取开头数字作为转换结果,若无则输出0。

    那么回过头来看题目(-_-)

    这一题需要构造的是 $key1 == $key2

    构造的要求是md5值相同,但未计算md5的值不同的绕过。

    那我们就来构造  O(∩_∩)O

    介绍一批md5开头是0e的字符串,

    0e在比较的时候会将其视作为科学计数法,所以无论0e后面是什么,

    0的多少次方还是0md5('240610708') == md5('QNKCDZO')成功绕过!

    QNKCDZO
    0e830400451993494058024219903391
    
    s878926199a
    0e545993274517709034328855841020
      
    s155964671a
    0e342768416822451524974117254469
      
    s214587387a
    0e848240448830537924465865611904
      
    s214587387a
    0e848240448830537924465865611904
      
    s878926199a
    0e545993274517709034328855841020
      
    s1091221200a
    0e940624217856561557816327384675
      
    s1885207154a
    0e509367213418206700842008763514

    构造payload:?kkeyey1=QNKCDZO&kkeyey2=240610708

    参考 :

    https://blog.csdn.net/xuchen16/article/details/82756559

    https://blog.csdn.net/eustiasora/article/details/79149411

  • 相关阅读:
    html 底部虚线
    C# 写入二进制文件
    js document 触发按键事件
    python之工作举例:通过复制NC文件来造数据
    python之多线程举例
    python之发送HTML内容的邮件
    python之打印日志logging
    python之查询指定目录下的最新文件
    python之datetime类
    python之Counter类:计算序列中出现次数最多的元素
  • 原文地址:https://www.cnblogs.com/unixcs/p/10615902.html
Copyright © 2020-2023  润新知