simple_php攻防世界,攻防世界simple_php

本文介绍了通过代码审计来解决一个PHP逻辑挑战的过程。条件包括:参数a必须等于0且非空以获取半个flag,参数b不能是数字以避免is_numeric()函数触发退出,同时b需大于1234以获取另一半flag。由于PHP的弱类型比较,1234等于1234a,因此当b设置为1235a时,满足不为数字且大于1234的条件,从而获得完整flag。这是一个关于PHP条件判断和弱类型比较的学习实例。
摘要由CSDN通过智能技术生成

94e5fdcf22ac09287c97f6f508b19f6a.png

00b292917ed6b190d461f40d86002c28.png

代码审计:

不难发现代码中给出了两个条件,且贱贱的把flag拆分到两个条件中。

条件1:

if($a==0 and $a){

echo $flag1;

}

说明:参数a=0且a为真才能得到半个flag.

条件2:

if(is_numeric($b)){

exit();

}

说明:is_numeric()函数可以参考https://www.runoob.com/php/php-is_numeric-function.html

如果b为数字则返回,即b不能为数字。

条件3:

if($b>1234){

echo $flag2;

}

说明:b要求大于1234才能得到另外半个flag.

条件2要求b不为数字条件3要求大于1234,此问题涉及到php弱类型比较。(可以上网搜搜)

在本题中弱类型比较时,1234=1234a。所以b=1235a时既不为数字同时也大于1234.

所以:http://111.198.29.45:56898/index.php?a=%220%22&b=1235a 补充条件就可以得到flag。

9059c6899b865fd8ddab24c6c4e9f0a2.png

我也是刚学web,只能先从简单的开始了,加油加油!

f1c0ef1a229b9c7c4c2ec41adbfeeaf7.png

d1358d4695d8660de2972cc1f6e682b2.png

zouchengzhi1021

发布了16 篇原创文章 · 获赞 0 · 访问量 193

私信

关注

标签:1234,攻防,数字,simple,numeric,flag,条件,php

来源: https://blog.csdn.net/zouchengzhi1021/article/details/104055602

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值