<?php
highlight_file(__FILE__);
$key1 = 0;
$key2 = 0;$a = $_GET['a'];
$b = $_GET['b'];if(isset($a) && intval($a) > 6000000 && strlen($a) <= 3){if(isset($b) && '8b184b' === substr(md5($b),-6,6)){$key1 = 1;}else{die("Emmm...再想想");}}else{die("Emmm...");
}$c=(array)json_decode(@$_GET['c']);
if(is_array($c) && !is_numeric(@$c["m"]) && $c["m"] > 2022){if(is_array(@$c["n"]) && count($c["n"]) == 2 && is_array($c["n"][0])){$d = array_search("DGGJ", $c["n"]);$d === false?die("no..."):NULL;foreach($c["n"] as $key=>$val){$val==="DGGJ"?die("no......"):NULL;}$key2 = 1;}else{die("no hack");}
}else{die("no");
}if($key1 && $key2){include "Hgfks.php";echo "You're right"."\n";echo $flag;
}?>

只有当$key1和$key2都=1时,才会显示falg。为了让它们都等于1,一共需要对三个参数进行绕过

参数a

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

判断参数是否为空,并且传入的数据长度不能超过3,值要大于6000000。

可以使用科学计数法来绕过  1e3=100

参数b

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

参数b传入的数据被MD5加密后的最后6位必须是8b184b

可以爆破出来,php代码

<?php
$a=0;
while(1)
{if(substr(md5($a),-6,6)==='8b184b'){echo $a;break;}$a++;
}
?>结果是:
53724

参数c

$c=(array)json_decode(@$_GET['c']);
if(is_array($c) && !is_numeric(@$c["m"]) && $c["m"] > 2022){if(is_array(@$c["n"]) && count($c["n"]) == 2 && is_array($c["n"][0])){$d = array_search("DGGJ", $c["n"]);$d === false?die("no..."):NULL;foreach($c["n"] as $key=>$val){$val==="DGGJ"?die("no......"):NULL;

json_decode()接受一个JSON格式的字符串并且把它转换为PHP变量 ,当该参数$assoc为TRUE时,将返回array,否则返回object。

传入的c必须有m,n两个键名,m的键值不是数字,但是要大于2022。

php中,当字符与数字进行比较时,字符会被转化为数字, 可以构造  "m":2023a。

n的键值是一个数组,数组的长度不能超过2,并且is_array($c["n"][0]) 告诉我们必须是一个二维数组

"n":[[1,2],[1,2]]   ->  $c['n']=[[1,2],[1,2]] , $c['n'][0]=[1,2]

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

array_search() 在数组中搜索要查询的键值,并返回它的键名(没有键名,返回下标)

首先$d不能的flase,那么array_search() 能够搜索带"DGGJ",即数组中有DGGJ

然后在foreach遍历循环中,又不能让$val="DGGJ",即数组中不能又DGGJ

两者互相矛盾

可以从array_search()这里来绕过,array_search()在搜索中,实际上是一个比较的过程

php中数字和字符串进行比较的时后,字符串会被传换位数字,所以在与数字比较的时候,DGGJ会被转换位0,只需要数组中有0即可。

成功返回了0对应的下标。

所以c={"m":2023a,"n"=[[1,2],0]}

easyphp(xctf)相关推荐

  1. XCTF联赛“出海计划”开启,八月新加坡站国际赛蓄势待发

    作为目前全国最高技术水平和最具影响力的网络安全技术对抗赛事,8月24日-25日,XCTF联赛将联合亚洲地区历史最悠久.影响面最广的安全大会HITBSecConf,在新加坡举办HITB GSEC CTF ...

  2. 【偶尔一道ctf】xctf adword mobile easy-apk

    最近在学习ctf,偶尔会做一些ctf题,打算记录下做题的步骤和思路,打算学习ctf的小白可以跟着一起动手学习.本题是安卓题目. 题目apk下载地址 https://adworld.xctf.org.c ...

  3. php本地环境搭建软件下载,用EasyPHP本地搭建PHP环境的步骤分享

    使用WordPress的朋友或许都希望在本地搭建一个WordPress,这样修改主题,测试插件就比较方便,同时也会减少在自己博客上的误操作.其实在本地搭建WordPress还是比较方便的,只需要在本地 ...

  4. XCTF WEB simple_php

    https://adworld.xctf.org.cn/task/answer?type=web&number=3&grade=0&id=5072 题解: 掌握php弱类型比较 ...

  5. XCTF WEB simple_js

    https://adworld.xctf.org.cn/task/answer?type=web&number=3&grade=0&id=5067 题解: F12查看网页源代码 ...

  6. XCTF WEB command_execution

    https://adworld.xctf.org.cn/task/answer?type=web&number=3&grade=0&id=5071 题解: windows或li ...

  7. XCTF WEB webshell

    https://adworld.xctf.org.cn/task/answer?type=web&number=3&grade=0&id=5070 版本一 题解:修改HTML代 ...

  8. XCTF WEB weak_auth

    https://adworld.xctf.org.cn/task/answer?type=web&number=3&grade=0&id=5069 题解:暴力破解 工具:Bur ...

  9. XCTF WEB xff_referer

    https://adworld.xctf.org.cn/task/answer?type=web&number=3&grade=0&id=5068 题解: 工具:Burp Su ...

  10. XCTF WEB disabled_button

    https://adworld.xctf.org.cn/task/answer?type=web&number=3&grade=0&id=5066 题解: 修改HTML代码 然 ...

最新文章

  1. Python教程分享之Python基础知识点梳理
  2. html中label的寬度無法修改,如何设置HTML span、label 的宽度
  3. 工作375-input readonly
  4. 操作系统原理与实践-2操作系统的引导
  5. android常见布局整理
  6. python之求字典最值
  7. 5. OpenCV图像分割-watershed
  8. 运筹学_化标准型_week2
  9. jmeter抓取百度热点链接
  10. 剑指offer 二叉搜索树与双向链表
  11. U盘中毒了丢失文件怎么办
  12. CF-Educational Codeforces Round 44 (Rated for Div. 2)-A-Chess Placing
  13. 嗅图狗——更新与反馈专贴
  14. python数据结构和算法 时间复杂度分析 乱序单词检测 线性数据结构 栈stack 字符匹配 表达式求值 queue队列 链表 递归 动态规划 排序和搜索 树 图
  15. 2019年寒假 纪中培训总结
  16. 爱奇艺攻防演练平台的探索实践(文末有直播福利)
  17. 微型计算机中须安装的软件是,每一台可以正常使用的微型计算机中必须安装的软件是...
  18. MATLAB R2018a简介
  19. 用JavaScript写一个类似于windows的气泡屏保效果
  20. 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可访问 6-8

热门文章

  1. ORA-28003和ORA-20001解决办法
  2. FCN——Semantic Segmentation的开山之作之论文解析
  3. HDU 4234 Moving Points
  4. rxj热血江hsf湖私服_如何使用RxJ进行React性思考和动画化移动对象
  5. 多图丨入门必看:万字长文带你轻松了解CRM
  6. VOIP技术连载之二--VOIP呼叫流程
  7. [book]《巅峰表现》
  8. C++二进制数转十进制
  9. 什么是大数据(转自知乎)
  10. U8存货核算月末结账的月份跟日期对不上,导致无法结账