[xctf] 江苏工匠杯easyphp
[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相关推荐
- 江苏工匠杯_unseping_wp
目录 前言 原题地址 工具的准备 分析代码 整个代码流程 琐碎知识点 解题代码测试 重要思路及测试 总结 关键字:江苏工匠杯 unseping 攻防世界 ctf解题wp 前言 有好久没有做过ctf的 ...
- 攻防世界-江苏工匠杯
1.来自银河的信号 下载附件发现是一段类似无线电波的音频,这里需要用到一个将声音解码成图片的软件RX-SSTV 下载地址 https://www.qsl.net/on6mu/download/Setu ...
- 攻防世界_江苏工匠杯_MISC_看雪看雪看雪
看雪看雪看雪 之前做过一次,没做出来,今天下载过来试试,看到rar,突然想到了,之前既然没有找到图片的隐写,是不是有ntfs,果然扫描就出现了4个文件,全部保存. 其中一个文件有这么多空格和tab,再 ...
- 江苏工匠杯-unseping序列化,正则绕过(全网最简单的wp)
开始 进入题目链接后看见如图代码,我们直接抓住关键点,不要浪费精力.大概看一下具体关键内容,第一个大框框属于命令执行,第二个大框框属于正则过滤危险字符,第三个大框框属于反序列化提交的内容,并且进行ba ...
- 某“工匠杯”内部预选赛
0x01 前言 某"工匠杯"比赛前某集团内部的一个预选赛,反正菜得没事做,就简单的看了下web部分的题,做一个简单的记录. 0x02 web题 2.1 命令执行 这道题给了一个ur ...
- “巴渝工匠”杯重庆市第十三届高等职业院校学生职业技能竞赛高职组“信息安全管理与评估”赛项任务书
"巴渝工匠"杯重庆市第十三届高等职业院校学生职业技能竞赛 高职组"信息安全管理与评估"赛项任务书 一.赛项时间 8:30 -12:20,共计230分钟,含赛题发 ...
- 巴渝工匠杯html5,巴渝工匠杯重庆市第十二届高职院校.PDF
巴渝工匠杯重庆市第十二届高职院校.PDF "巴渝工匠"杯重庆市第十二届高职院校 学生技能竞赛物联网技术应用技能赛项 竞 赛 规 程 主办单位:重庆市教育委员会 重庆市人力资源和社会 ...
- #2019江苏领航杯部分wp
关于2019领航杯部分wp 队友的wp 两天前参加了领航杯,奋斗了24小时,做出了十几题. 第一题签到题 base64解码 第三题steganoI 一个简单的隐写,可以用strings查看他的信息 第 ...
- 攻防世界-unseping
攻防世界-unseping [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iPc18GlQ-1666931905094)(data:image/png;base64,i ...
- CFT学习资源与工具上新
点击"仙网攻城狮"关注我们哦~ 不当想研发的渗透人不是好运维 让我们每天进步一点点 简介 CTF基础,资料太多太杂不知道该怎么学,学习CTF有什么用?学习CTF最主要的是学习思路关 ...
最新文章
- 如何搭建一个你喜欢的工作环境
- WINCE6.0文件系统及存储管理器
- 谷歌Deep Bootstrap Framework:在线优化角度理解神经网络
- Boost:boost::atomic用法实例
- SpringMVC工作原理 1
- 平板电脑硬件如何测试软件,先锋(Pioneer)G71平板电脑软件测试评测-ZOL中关村在线...
- java 跨域 下载文件_文件下载重命名(可跨域)
- 人脸识别中的阈值应该如何设置?
- Vue - ElementUI中循环渲染表格,控制字段的显示与隐藏 v-if与v-for同时使用
- 学习Spring必学的Java基础知识(2)----动态代理
- Linux系统手动安装rpm包依赖关系分析(以Kernel升级为例)
- 仿微信语音输入页面(讯飞语音)
- 计算机领域国际期刊,科学网—计算机国际期刊zz - 黄红星的博文
- An annotation management system for relational databases(论文阅读)
- MNE从头创建raw结构
- java计算机毕业设计vue健康餐饮管理系统设计与实现MyBatis+系统+LW文档+源码+调试部署
- vim报错E45: ‘readonly‘ option is set (add ! to override)
- 萨克斯《全球视角的宏观经济学》课后答案
- visibility 和 display 的区别
- ZZULIOJ-1525-小P找座位
热门文章
- 语言的流变_拔剑-浆糊的传说_新浪博客
- 网页游戏外挂的设计与编写:QQ摩天大楼【二】(登陆准备-信息处理方式)
- 如何解决Python中的RuntimeWarning: invalid value encountered in double_scalars问题
- [AC自动机]luoguP3966
- Docker 安装及镜像加速器配置
- Direct3d纹理
- 计算机职业价值观测评报告,职业价值观测评—中国毕业生职业能力素质测评系统...
- mysql tmp mysql.sock_MySQL搭建过程中的“/tmp/mysql.sock错误解决
- 如何将java项目部署到linux环境(Tomcat)
- GCD中的dispatch_barrier_async函数的使用(栅栏函数)