easyphp(xctf)
<?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)相关推荐
- XCTF联赛“出海计划”开启,八月新加坡站国际赛蓄势待发
作为目前全国最高技术水平和最具影响力的网络安全技术对抗赛事,8月24日-25日,XCTF联赛将联合亚洲地区历史最悠久.影响面最广的安全大会HITBSecConf,在新加坡举办HITB GSEC CTF ...
- 【偶尔一道ctf】xctf adword mobile easy-apk
最近在学习ctf,偶尔会做一些ctf题,打算记录下做题的步骤和思路,打算学习ctf的小白可以跟着一起动手学习.本题是安卓题目. 题目apk下载地址 https://adworld.xctf.org.c ...
- php本地环境搭建软件下载,用EasyPHP本地搭建PHP环境的步骤分享
使用WordPress的朋友或许都希望在本地搭建一个WordPress,这样修改主题,测试插件就比较方便,同时也会减少在自己博客上的误操作.其实在本地搭建WordPress还是比较方便的,只需要在本地 ...
- XCTF WEB simple_php
https://adworld.xctf.org.cn/task/answer?type=web&number=3&grade=0&id=5072 题解: 掌握php弱类型比较 ...
- XCTF WEB simple_js
https://adworld.xctf.org.cn/task/answer?type=web&number=3&grade=0&id=5067 题解: F12查看网页源代码 ...
- XCTF WEB command_execution
https://adworld.xctf.org.cn/task/answer?type=web&number=3&grade=0&id=5071 题解: windows或li ...
- XCTF WEB webshell
https://adworld.xctf.org.cn/task/answer?type=web&number=3&grade=0&id=5070 版本一 题解:修改HTML代 ...
- XCTF WEB weak_auth
https://adworld.xctf.org.cn/task/answer?type=web&number=3&grade=0&id=5069 题解:暴力破解 工具:Bur ...
- XCTF WEB xff_referer
https://adworld.xctf.org.cn/task/answer?type=web&number=3&grade=0&id=5068 题解: 工具:Burp Su ...
- XCTF WEB disabled_button
https://adworld.xctf.org.cn/task/answer?type=web&number=3&grade=0&id=5066 题解: 修改HTML代码 然 ...
最新文章
- Python教程分享之Python基础知识点梳理
- html中label的寬度無法修改,如何设置HTML span、label 的宽度
- 工作375-input readonly
- 操作系统原理与实践-2操作系统的引导
- android常见布局整理
- python之求字典最值
- 5. OpenCV图像分割-watershed
- 运筹学_化标准型_week2
- jmeter抓取百度热点链接
- 剑指offer 二叉搜索树与双向链表
- U盘中毒了丢失文件怎么办
- CF-Educational Codeforces Round 44 (Rated for Div. 2)-A-Chess Placing
- 嗅图狗——更新与反馈专贴
- python数据结构和算法 时间复杂度分析 乱序单词检测 线性数据结构 栈stack 字符匹配 表达式求值 queue队列 链表 递归 动态规划 排序和搜索 树 图
- 2019年寒假 纪中培训总结
- 爱奇艺攻防演练平台的探索实践(文末有直播福利)
- 微型计算机中须安装的软件是,每一台可以正常使用的微型计算机中必须安装的软件是...
- MATLAB R2018a简介
- 用JavaScript写一个类似于windows的气泡屏保效果
- 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可访问 6-8