码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 攻防世界WEB练习 | easyphp


    前言

    作者简介:不知名白帽,网络安全学习者。

    博客主页:https://blog.csdn.net/m0_63127854?type=blog

    攻防世界专栏:https://blog.csdn.net/m0_63127854/category_11983747.html

    网络安全交流社区:https://bbs.csdn.net/forums/angluoanquan

    目录

    题目场景

    代码分析

    找到flag


    题目场景

    ​

    代码分析

    if(isset($a) && intval($a) > 6000000 && strlen($a) <= 3)

    isset:检查变量是否设置

    intval:检查变量是否为int型

    strlen:检查变量的长度

    要求a存在且大于6000000,a的长度不能超过3

    使用科学计数法 a=1e9(e9即10的9次方)

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

    直接用脚本跑出

    for($i = 1;$i <= 1000000;$i++){

        if('8b184b' === substr(md5($i),-6,6)){

            echo $i."
    ".md5($i);

        }

    }

    ?>

    ​

    所以第一部分payload为?a=1e9&b=53724

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

    构造出数组C后json_decode

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

    $c需为数组。且存在m,m不能为数字,但是需大于2022.科学技术法,直接m赋值为2023q 即可

    c={"m":"2023q"}

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

    $c 存在n为数组,n的值数量为2(非索引).n的第一个值为数组,(这里的0为索引)

    c={"m":"2023q","n":[[1,2],3]}

    1. $d = array_search("DGGJ", $c["n"])
    2. foreach($c["n"] as $key=>$val){
    3.             $val==="DGGJ"?die("no......"):NULL;

    核心点是如何绕过array_ search这个函数。先看看下面两个判断吧,array_ seach的结
    果b不能是假,也就是Array [n]中必须有元素是DGGJ,同时遍历Array [n]之后对数组值
    进行判断,如果存在DGGJ则终止程序。
    很明显这两个条件是矛盾的,开头提到了如何绕过array_ search是核心点,既然如此就先
    了解一下array_search这个函数的作用吧。其作用是在数组中查找元素,并返回其下标。
    而这个函数在进行元素查找的过程中进行的比较是==而非== =,因此同样是采取弱类型比较
    的特点,因为是和没有数字字符串比较所以我们只要保证在Array [n]中存在非0下标的元
    素中存在值0即可。因为在php中"字符串"==0是成立的。
    最后再通过json_ encode ()将我们构造的数组进行一下转化就得到了 Array [n]的json格
    式数据。

    第二部分payload c={"m":"2023q","n":[[1,2],0]}

    构造payload:?a=1e9&b=53724&c={"m":"2023q","n":[[1,2],0]}

    ​

    找到flag

    cyberpeace{db35f9b1ea0eaea688749f824e0ba234} 

  • 相关阅读:
    YOLOv5算法改进(6)— Neck网络介绍(AFPN和BiFPN)
    2024黑马AI+若依框架项目开发 个人心得、踩坑和bug记录 全网最快最全 基础功能认识篇
    Python 图形化界面基础篇:添加按钮( Button )到 Tkinter 窗口
    使用Python访问Zookeeper获取数据
    Linux实用指令-指定运行级别、帮助指令
    vulnhub_Empire_LupinOne靶机渗透测试
    java计算机毕业设计酒店信息管理源码+mysql数据库+系统+lw文档+部署
    【分享】集简云新功能:集简云浏览器机器人,将任意网站页面转换为API连接器
    数据结构之堆 → 不要局限于堆排序
    记一次MySQL执行修改语句超时问题
  • 原文地址:https://blog.csdn.net/m0_63127854/article/details/127536772
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号