攻防世界题目:simple_php 详细思路

题目:小宁听说php是最好的语言,于是她简单学习之后写了几行php代码。

点开,发现如下代码
在这里插入图片描述
没学过php怎么办…
不着急,一行一行分析<?php ?>百度得知是构成完整php语句,跳过

下一行:show_source(FILE);通过百度得知是个函数
在这里插入图片描述
在这里插入图片描述
就是让图中的代码五颜六色嘛(瞎猜的,意思差不多),按f12也体现出来了

下一行:include(“config.php”)
试了下在地址后面加上/config.php,结果没效果
百度后得知:是php的一个框架,可略过

下两行:根据所学过的c,c++猜测到是get一个a的值和b的值
查资料后发现差不多是这样
那网页上怎么get呢?
地址后面直接加/?a=*** &b=***传参即可

三个判断语句
第一个if:a==0 and $a
查得php中两个等于为宽松比较(csdn贴两次等于字体就变黄了,所以用语言形式说明)
三个等于为严格比较(类型不同即使一样也返回false)

举个例:两个等于情况下“0”=0返回true,而三个等于则返回false
在这里插入图片描述
在这里插入图片描述
所以把a赋值的时候保证第一位数是字母即可
$a:a必须为真

echo:就是c语言中的printf
在这里插入图片描述
第二个if:is_numeric($b)
百度得知numeric为一个函数,用来判断是否只由数字组成
那b则不是数字或者数字字符串

第三个if,很明显得出结论

最后得到:
get a和b的值
如果a和0比较返回为true而且a为真
而且b不是纯数字
而且b要大于1234
满足这些条件则返回flag

根据分析,a可以=abcd(以0开头会认为是八进制数字)
因为b不能是纯数字而且要大于1234(很明显提醒你了,可以在数字后面加字母表示非纯数字)
则b可以=9999c
然后把a=abcd,b=9999c写进去即可
成功拿到flag
在这里插入图片描述

附上网上找的PHP逻辑运算符类型转换规则,感兴趣可以学习http://blog.sina.com.cn/s/blog_e4bd46a00102y87a.html

  • 40
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值