xctf_easyphp

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;
        }

9.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:] == 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

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

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

    image-20230523220721404

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

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

    ​ 所以更正n:image-20230523220729441

综上所述:

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

作者:NTrack

出处:https://www.cnblogs.com/ntrack/p/17426518.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   ntrack  阅读(51)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示