首页 > 编程语言 >xctf_easyphp

xctf_easyphp

时间:2023-05-23 21:55:26浏览次数:43  
标签:数组 array && easyphp message DGGJ xctf md5

easyphp

类型:PHP代码审计

1.审查传值

image-20230523201936576

image-20230523202306976

2.观看分析条件

从上往下看:
1.if(isset($a) && intval($a) > 6000000 && strlen($a) <= 3)

2.if(isset($b) && '8b184b' === substr(md5($b),-6,6))

3.$c=(array)json_decode(@$_GET['c'])

4.if(is_array($c) && !is_numeric(@$c["m"]) && $c["m"] > 2022)

5.if(is_array(@$c["n"]) && count($c["n"]) == 2 && is_array($c["n"][0]))

6.$d = array_search("DGGJ", $c["n"]);

7.$d === false?die("no..."):NULL;

8.foreach($c["n"] as $key=>$val){
            $val==="DGGJ"?die("no......"):NULL;
        }

8.if($key1 && $key2)

分析:

  1. 要求传入a值,并且a的整数值要大于6000000,还要a的长度小于等于3

     通过php的弱比较可以想到输入a=1e9,e代表科学计数法。
    
  2. 要求传入b值,并且b值的md5哈希值的后6位为8b184b

     通过使用python写个码来实现暴力破解,最终值为53724
    
    import hashlib
    
    
    def find_collision(test):
        counter = 0
        # 暴力破解
        while True:
            message = str(counter)
            md5 = hashlib.md5(message.encode()).hexdigest()
    
            # 获取后6位为8b184b的MD5加密码
            if md5[-6:6] == test:
                return message
            else:
                print("error")
    
            counter += 1
    
    
    # 代入测试
    test = '8b184b'
    message = find_collision(test)
    print("Message:", message)
    print("MD5(Message):", hashlib.md5(message.encode()).hexdigest())
    
    
  3. 传入json格式的c值,并将其转化为PHP数组变量

    json格式的字符串:
    {"a":"php","b":"mysql","c":3}	//其中可以理解a为键,php为值
    
  4. 要求数组c中m的值不可以是纯数字,且需要大于2022

    ​ 看到使用弱比较,所以使得

  5. 要求数组的n具有两个元素,并且第一个元素还是数组

  6. 通过6和7判断出,6知道数组n中需要有”DGGJ“的值,7知道数组n中不可以有“DGGJ”的值

    array_search()函数
    结果:如果找不到DGGJ就返回FALSE,找到返回key
    分析:该函数使用的是弱比较,知道字符串开头的字符串==0,所以"DGGJ"==0 成立
    

    ​ 所以更正n:

综上所述:

payload:?a=1e9&b=53724&c={"m":"1e4c","n":[[1],0]}

标签:数组,array,&&,easyphp,message,DGGJ,xctf,md5
From: https://www.cnblogs.com/ntrack/p/17426518.html

相关文章

  • WP | XCTF上两道Web方向基础题
    一、unserialize31、进入靶场环境界面如下: 是一段Java代码 2、题目unserialize给出提示这题的方向是反序列化关于序列化的概念:序列化(Serialization)是将对象的......
  • [GYCTF2020]Easyphp
    [GYCTF2020]Easyphp考点:反序列化的对象逃逸非常典型的登陆界面,随便输了输,发现存在admin用户,猜测是弱口令,拿字典跑了一遍,无果按照以往的做题经验,觉得可能有源码泄露,尝试/......
  • [攻防世界][江苏工匠杯]easyphp
    打开靶机url,上来就代码审计<?phphighlight_file(__FILE__);$key1=0;$key2=0;$a=$_GET['a'];$b=$_GET['b'];if(isset($a)&&intval($a)>6000000&&str......
  • XCTF---MISC---Time_losing
    XCTF---MISC---Time_losing flag:XMan{seems_to_be_related_to_the_special_guests}解题思路:1、观察题目,下载附件2、根据题目描述和得到的文件,判断该题可能与时间戳......
  • 攻防世界-easyphp(前导数字字符串、数字字符串、数字弱类型比较)
    一道php代码审计题,利用了字符与数字弱类型比较的漏洞。 一、基础知识数字字符串形如数字形式的字符串叫做数字字符串,例如:'123456','1e56112'(科学计数法),'1......
  • XCTF---MISC---流量分析2
    XCTF---MISC---流量分析2 flag:flag{17uaji1l}解题思路:1、观察题目,下载附件。2、根据题目提示,关注流量包本身,与对应网址内容无关,判断可能是HTTP流量,使用Wireshark进......
  • XCTF---MISC---Encode
    XCTF---MISC---Encode flag:flag{159c6275f0015c037e70a118f25b9a99}解题步骤:1、观察题目,下载附件。2、下载附件打开后发现是一个经过加密的压缩包,得到提升,密码就是......
  • XCTF---MISC---Encode
    XCTF---MISC---Encode flag:flag{W0w_y0u_c4n_rea11y_enc0d1ng!}解题思路:1、观察题目,下载附件。2、下载附件后,发现是一个文本文档,里面有一些密文,尝试常用的解密方式,......
  • XCTF---MISC---Wire1
    XCTF---MISC---Wire1 flag:flag{w1reshARK_ez_1sntit}解题思路:1、观察题目,下载附件。2、下载后发现是一个数据包格式文件,使用Wireshark打开,观察协议内容。3、搜索......
  • xctf-polyre
    一道ollvm的题,主要是去平坦化先查壳,64位elf,无壳直接拖入ida,定位到main函数 发现是ollvm平坦化,我们用在linux中使用deflat进行平坦化去除之后用ida打开找到关键......