首页 > 编程语言 >XCTF-easyphp

XCTF-easyphp

时间:2023-11-29 12:22:47浏览次数:36  
标签:数组 json && easyphp array DGGJ 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;
}

?> 

这里&&号就是and的意思,需要传入三个值abc,这三个参数满足条件就可以获得flag,条件如下:

  • a: 传入数字必须大于6000000,但是长度不能大于3
  • b: 通过md5计算出的后六位值必须完全等于8b184b
  • c: 传入的格式为json
    • json数组中m属性必须是一个数字,并且必须大于2022
    • json数组中n属性必须是一个数组,数组中有两个值,n属性中的第一个值必须为数组
      • n属性中必须含有DGGJ,但是在最后又循环n属性中的值,不能含有DGGJ
  1. 第一个a使用科学计数法来表示6e8来表示,就是6后面添加8个0,也就是6亿,题目中的是六百万

  2. 第二个b使用脚本跑出后六位为8b184b的值

<?php

for ($i=0; $i < 10000000000; $i++) { 
	if(substr(md5($i),-6,6) === '8b184b'){
		print($i."\n");
	}
}

?>


这里就是用53724

  1. 传入c,这个我们输入了解

PHP值一个弱类型语言,在我们使用2023 == "2023a"的时候条件是成立的

所有,参数cjson数组中的第一个属性m的值为2023a即可,即:c={"m":"2023a"}

其次是json数组中的第二个属性n,自己是一个数组,然后第一个值为数组c={"n":[[],1]}
然后就是满足array_search()这个函数的和foreach循环的条件

可以看到array_search()函数返回的是值所在的下标这样我们就绕过了DGGJ值的判断,后面判断$b的值是完全等于flase,0 === flase是错误的,所以成功绕过

并且在与字符串比较的时候任何字符串和0的比较都是True,最后成功绕过上述的判断

最后整理payload

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

访问获得flag

不错的弱类型题目!

标签:数组,json,&&,easyphp,array,DGGJ,XCTF,属性
From: https://www.cnblogs.com/Junglezt/p/17864537.html

相关文章

  • XCTF-file_include
    根据题目描述应该是一个文件包含的题目,访问主页面需要传入filename的参数,尝试使用php://filter协议读取check.php文件的内容?filename=php://filter/read/=convert.base64-encode/resource=check.php经过一些测试,得到过滤了php://filter/read和base64,这里无法使用php://filt......
  • 【?】Web_XCTF_WriteUp | simple_php
    题目提示:小宁听说php是最好的语言,于是她简单学习之后写了几行php代码。题目:分析读代码:<?php//php脚本的开始部分show_source(__FILE__);//对当前文件进行php语法高亮显示include("config.php");//引用config.php文件$a=@$_GET['a'];//......
  • XCTF-ics-05
    访问页面,似曾相识的页面,查看源代码,搜索php,找到index.php,访问index.php看不出什么,继续访问index.php的源代码获取到有用信息page=index的传参这应该是一个文件包含,尝试使用data://协议进行命令执行?page=data://text/plain,<?phpphpinfo();?>没有任何回显,可能是过滤了,接着......
  • XCTF-mfw
    访问主页经过发现page传参应该是一个文件包含页面,不过没有加后缀名,应该是在服务端会自动给我们加上试了文件包含的data://协议,还有%00阶段没有成功,使用dirb进行目录爆破得到.git目录,应该是.git泄露,使用GitHack获取python2GitHack.pyhttp://61.147.171.105:60868/.git......
  • XCTF-web2
    访问查看得到下方源码<?php$miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";functionencode($str){$_o=strrev($str);//echo$_o;for($_0=0;$_0<strlen($_o);$_0++){$_c=substr($_o,$_0,1);......
  • Misc_XCTF_WriteUp | stegano
    题目提示:菜狗收到了图后很开心,玩起了pdf提交格式为flag{xxx},解密字符需小写题目:分析首先查看文件属性,没有发现异常。查看十六进制文件,文件头正常。在文件中搜索“flag”文本,找到一串base64编码:解码后发现不是flag:同时在这个假flag前发现“Producer(findmr.m......
  • XCTF-Web_php_unserialize
    访问查看是一道经典的反序列化题目,尝试解题,大概一下脚本,需要传入var进行反序列化php代码会先将var传入的值进行base64解码,然后进行perg_match()正则匹配判断,如果匹配成立就执行die()方法终止脚本运行使用unserialize()方法反序列化我们传入的值__wakeup()在反序列化时候执......
  • Misc_XCTF_WriteUp | 坚持60s
    题目(一个jar文件分析运行了一下,是一个躲绿帽的游戏,掐点过了60s,什么也没有:……可恶,被骗了人生的60s(握拳)用010Editor打开,发现是zip压缩包的文件头(查了一下好像jar文件本身就是压缩文件),解压缩得到文件源码:检查完image文件夹中的所有图片素材,没有找到flag。将......
  • Crypto_XCTF_WriteUp | 你猜猜
    题目提示:我们刚刚拦截了,敌军的文件传输获取一份机密文件,请君速速破解。题目:504B03040A0001080000626D0A49F4B5091F1E0000001200000008000000666C61672E7478746C9F170D35D0A45826A03E161FB96870EDDFC7C89A11862F9199B4CD78E7504B01023F000A0001080000626D0A49F4B5091F1E0000001......
  • Crypto_XCTF_WriteUp | easychallenge
    题目一个pyc文件(……不知道怎么形容分析用txt格式打开是一串半人半鱼的……一串夹着一点点编程语言的乱码,必应了一下是python运行后生成的字节码文件。直接运行出现报错:提示pyc文件中的magicnumber错误,可能是python版本不匹配或者文件损坏导致。于是安装uncom......