攻防世界 easyphp writeup

进入环境,发现php代码如下,这一题应该考察的是代码审计的能力,如何绕过各个判断。

首先第一个判断是:

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

 intval函数的作用是返回是获取给定变量的整数值,对各个类型的输入的输出如下所示。第一个判断要求a的值大于6000000且长度要小于等于3,由下图可以看出,把a构造为一个足够大的科学计数法数即可(9e9)

第二个判断是:

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

         substr函数简介如下图,值得注意的是strat为负数n时,起始位置是在字符串尾部向前的n位,但是之后仍然是向后取字符串。

         这个判断要求b的md5值的最后六位等于‘8b184b',用代码进行爆破即可,得出的一个可用值为53724.

第三个判断前,对c进行了json_decode处理,所以在之后构造的c,先用json_encode进行处理。

$c=(array)json_decode(@$_GET['c']);

if(is_array($c) && !is_numeric(@$c["m"]) && $c["m"] > 2022)

        这个判断首先要求c是数组,然后要求c["m"]不是数字而c["m"]又要大于2022,显然,这两个条件相互矛盾,但是在php中,字符串和数字比较时,字符串会截取第一个字母前的数字来进行比较,所以只要让c["m"]=“2023a”即可(此处a可以任意替换为字母)。

        下一个判断为:

if(is_array(@$c["n"]) && count($c["n"]) == 2 && is_array($c["n"][0]))

所以c["n"] 要是一个数组,且长度为2,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;
}

        下一个判断中,array_search在c["n"]中搜索“DGGJ”,如果没有这个值那么判断失败,之后又遍历c["n"],如果找到DGGJ则判断同样失败,这又是两个互相矛盾的要求。

        array_search的搜索过程中,使用的是“==”比较,所以“DGGJ”==0是成立的,因此,要保证在c["n"]中有0,即可绕过array_search的判断。可以构造出

$c = array("m" => "2023a","n" => array(array(),0));

         随后将其用json_encode编码后,可以得到最后的输入:

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

 最后成功得到答案

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
8B10B编解码器在PCI_Express总线中的实现_林锦棠.pdf 8B_10B编码器新型算法结构的设计与实现_王方.pdf 8B_10B编码器的设计及实现.pdf 8B_10B编码器的设计及实现_李宥谋.pdf 8B_10B编码对高速传输的影响分析_李玉伟.pdf 8b_10b编解码器设计及其在测井系统中的应用_许磊.pdf A Novel Stochastic Model-Based Eye-Diagram Estimation Method for 8B10B and TMDS-Encoded High-Speed Channel.pdf An 8b10b Encoding SerializerDeserializer (SerDes) Circuit for High Speed Communication Applications Using a DC Balanced, PartitionedBlock, 8b10b Transmission Code .pdf Bienfang-2004-Quantum-key-distribution-with--gbps.pdf DC-balanced line encoding for optical labeling scheme using orthogonal modulation.pdf Design of Physical Coding Sublayer using 8B10B Algorithm .pdf Eye-Diagram Estimation with Stochastic Model for 8B10B Encoded High-Speed Channel.pdf JESD204B中的8B_10B编码器设计_何基.pdf JESD204B接口中8B10B解码电路quad_byte设计_霍兴华.pdf JESD204B接口协议中的8B10B编码器设计_霍兴华.pdf PCI_Express中8b_10b编码解码器的设计与实现_许军.pdf Power Optimization of High Speed Pipelined 8B10B Encode.pdf SATA高速串行总线8B_10B编解码模块设计新方法_申慧军.pdf The Implementation of High-speed Data Transmission for 8B10B Protocol on FPGA.pdf www.cn-ki.net_一种新的8B_10B编解码方案设计与实现.pdf 一种使用纠错技术的8B_10B编码器设计_王方.pdf 一种具有查错功能的10B_8B解码器设计_邹陈.pdf 一种基于FPGA的8B_10B编解码电路的设计与实现_武小强.pdf 一种新的8B_10B编码器的设计方法_洪波.pdf 一种新的8B_10B编码器设计_舒志兴.pdf 一种新的8B_10B编码电路设计_刘智.pdf 一种新的8B_10B编解码方案设计与实现_孙科达.pdf 一种新的8B_10B编解码设计_刘文杰.pdf 一种新的光纤通信8B_10B编解码实现方法研究_戴居丰.pdf 万兆以太网中64B_66B编解码的硬件实现方法_周晴伦.pdf 光纤通道8B_10B编码的ASIC研究与设计_唐兴.pdf 光纤通道8B_10B编解码模块设计_陈孟杰.pdf 千兆以太网中的8B_10B编解码的CPLD实现技术_敬伟.pdf 基于FPGA的64B_66B编解码设计与实现_王向阳.pdf 基于FPGA的8B_10B编码器的设计与实现_靳鹏.pdf 基于FPGA的8B_10B编解码设计_陈锋.pdf 基于FPGA的万兆以太网接口的设计与实现_李伟.pdf 基于FPGA的串行64B_66B编解码IP核设计与研究_庞志锋.pdf 基于PRBS检测的8B_10B编码器设计_吴光珩.pdf 基于PRBS检测的8B/10B编码器设计.pdf 基于逻辑设计的光纤通信8B_10B编解码方法研究_赵文虎.pdf 快速建立时间的自适应锁相环_黄水龙.pdf 新型8B_10B编码方案的设计与实现_常红.pdf 星载电子标准化总线接口底层模块设计_3_3_2编码模块设计_31_34_张磊_3.pdf 星载电子标准化总线接口底层模块设计_3_3_3发送子模块设计_34_38_张磊_.pdf 解码.pdf 采用并行8b_10b编码的JESD204B接口发送端电路设计_李长庆.pdf 面向2.5G+SerDes的8b10b编解码电路设计与测试.pdf

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值