[xctf] 江苏工匠杯easyphp

考点

PHP弱类型

一、题目

 <?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;
}?> Emmm...

二、WP

​ 分析以下代码,分别有a、b、c三个条件,只要当这三个条件都满足的时候,就会输出Flag,a和b都比较简单,所以说本题的考点为参数c的array_search绕过

1、参数a

​ 代码的大概意思为:将a的值转换为整数,然后需要满足大于6000000 同时长度小于等于 3,我们直接使用科学技术法。

a=6e9

2、参数b

​ 代码含义为:将b的值进行md5加密,当加密后的值后6位为8b184b的时候,就会进行到下一个判断,我们直接使用脚本跑一下,得到的结果为53724

3、参数c

​ 接下来就是本题的重点,搞了好久才研究出来/(ㄒoㄒ)/~~。

①、根据第一行代码可知,传入的c应该是一段JSON的数据,然后解析为数组。

②、首先判断Json中Key为m的Value不能为数字,并且需要大于2022,这个简单只需要利用php的弱类型比较,将m赋值为2023开头的字符串即可,这里将其赋值为2023a

③、然后对key为n的value进行判断,要求n必须为一个数组,并且value的数量必须为2,并且n的第一个value又必须为一个数组。然后有意思的来了,题目要求第一次用array_search搜索的时候,必须在n中含有DGGJ,但是接下来的代码是循环查看数组中是否含有DGGJ,如果含有的话就直接die了。

④、经过参考array_search的官方文档,发现当使用in_array()array_search()函数时,如果strict参数没有设置为true,则in_array()array_search()将使用松散来判断。

这里用代码来演示一下什么是松散判断

$array = ['a',0,1,2,'3'];
var_dump(in_array('abc', $array));    //True,下标为1(查看是否在数组中)
var_dump(array_search('abc', $array));        //搜索abc字符串在数组中出现的第一个下标

在array数组中查找abc,我们可以发现其实数组中并没有abc,但是因为松散判断,匹配到了数字0,其实和var_dump("admin" == 0); //结果true同理

发现此漏洞的话,我们就可以将数组c中的第二个值设置为0,这样会满足array_search()的条件,同时也不存在DGGJ

最终我们的payload为

?a=6e9&b=53724&c={
"m":"2023a",
"n":[[],0]
}

条件,同时也不存在DGGJ

最终我们的payload为

?a=6e9&b=53724&c={
"m":"2023a",
"n":[[],0]
}

[xctf] 江苏工匠杯easyphp相关推荐

  1. 江苏工匠杯_unseping_wp

    目录 前言 原题地址 工具的准备 分析代码 整个代码流程 琐碎知识点 解题代码测试 重要思路及测试 ​总结 关键字:江苏工匠杯 unseping 攻防世界 ctf解题wp 前言 有好久没有做过ctf的 ...

  2. 攻防世界-江苏工匠杯

    1.来自银河的信号 下载附件发现是一段类似无线电波的音频,这里需要用到一个将声音解码成图片的软件RX-SSTV 下载地址 https://www.qsl.net/on6mu/download/Setu ...

  3. 攻防世界_江苏工匠杯_MISC_看雪看雪看雪

    看雪看雪看雪 之前做过一次,没做出来,今天下载过来试试,看到rar,突然想到了,之前既然没有找到图片的隐写,是不是有ntfs,果然扫描就出现了4个文件,全部保存. 其中一个文件有这么多空格和tab,再 ...

  4. 江苏工匠杯-unseping序列化,正则绕过(全网最简单的wp)

    开始 进入题目链接后看见如图代码,我们直接抓住关键点,不要浪费精力.大概看一下具体关键内容,第一个大框框属于命令执行,第二个大框框属于正则过滤危险字符,第三个大框框属于反序列化提交的内容,并且进行ba ...

  5. 某“工匠杯”内部预选赛

    0x01 前言 某"工匠杯"比赛前某集团内部的一个预选赛,反正菜得没事做,就简单的看了下web部分的题,做一个简单的记录. 0x02 web题 2.1 命令执行 这道题给了一个ur ...

  6. “巴渝工匠”杯重庆市第十三届高等职业院校学生职业技能竞赛高职组“信息安全管理与评估”赛项任务书

    "巴渝工匠"杯重庆市第十三届高等职业院校学生职业技能竞赛 高职组"信息安全管理与评估"赛项任务书 一.赛项时间 8:30 -12:20,共计230分钟,含赛题发 ...

  7. 巴渝工匠杯html5,巴渝工匠杯重庆市第十二届高职院校.PDF

    巴渝工匠杯重庆市第十二届高职院校.PDF "巴渝工匠"杯重庆市第十二届高职院校 学生技能竞赛物联网技术应用技能赛项 竞 赛 规 程 主办单位:重庆市教育委员会 重庆市人力资源和社会 ...

  8. #2019江苏领航杯部分wp

    关于2019领航杯部分wp 队友的wp 两天前参加了领航杯,奋斗了24小时,做出了十几题. 第一题签到题 base64解码 第三题steganoI 一个简单的隐写,可以用strings查看他的信息 第 ...

  9. 攻防世界-unseping

    攻防世界-unseping [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iPc18GlQ-1666931905094)(data:image/png;base64,i ...

  10. CFT学习资源与工具上新

    点击"仙网攻城狮"关注我们哦~ 不当想研发的渗透人不是好运维 让我们每天进步一点点 简介 CTF基础,资料太多太杂不知道该怎么学,学习CTF有什么用?学习CTF最主要的是学习思路关 ...

最新文章

  1. 如何搭建一个你喜欢的工作环境
  2. WINCE6.0文件系统及存储管理器
  3. 谷歌Deep Bootstrap Framework:在线优化角度理解神经网络
  4. Boost:boost::atomic用法实例
  5. SpringMVC工作原理 1
  6. 平板电脑硬件如何测试软件,先锋(Pioneer)G71平板电脑软件测试评测-ZOL中关村在线...
  7. java 跨域 下载文件_文件下载重命名(可跨域)
  8. 人脸识别中的阈值应该如何设置?
  9. Vue - ElementUI中循环渲染表格,控制字段的显示与隐藏 v-if与v-for同时使用
  10. 学习Spring必学的Java基础知识(2)----动态代理
  11. Linux系统手动安装rpm包依赖关系分析(以Kernel升级为例)
  12. 仿微信语音输入页面(讯飞语音)
  13. 计算机领域国际期刊,科学网—计算机国际期刊zz - 黄红星的博文
  14. An annotation management system for relational databases(论文阅读)
  15. MNE从头创建raw结构
  16. java计算机毕业设计vue健康餐饮管理系统设计与实现MyBatis+系统+LW文档+源码+调试部署
  17. vim报错E45: ‘readonly‘ option is set (add ! to override)
  18. 萨克斯《全球视角的宏观经济学》课后答案
  19. visibility 和 display 的区别
  20. ZZULIOJ-1525-小P找座位

热门文章

  1. 语言的流变_拔剑-浆糊的传说_新浪博客
  2. 网页游戏外挂的设计与编写:QQ摩天大楼【二】(登陆准备-信息处理方式)
  3. 如何解决Python中的RuntimeWarning: invalid value encountered in double_scalars问题
  4. [AC自动机]luoguP3966
  5. Docker 安装及镜像加速器配置
  6. Direct3d纹理
  7. 计算机职业价值观测评报告,职业价值观测评—中国毕业生职业能力素质测评系统...
  8. mysql tmp mysql.sock_MySQL搭建过程中的“/tmp/mysql.sock错误解决
  9. 如何将java项目部署到linux环境(Tomcat)
  10. GCD中的dispatch_barrier_async函数的使用(栅栏函数)