攻防世界(WEB) warmup

warmup热身,打开题目就是一个大大的滑稽,便打开F12看看了

发现注释了一个source.php,便进入这个地方看看去 

发现一大串代码,这种情况下我都是不看函数的,直接先看后面

 

他是一个if语句判断,通过的条件是file传入的get参数存在,并且是字符串形式,并且还要让emm类的checFile语句返回为真,才能让file参数包含进去(三个条件缺一不可),否则输出一个图片,其实一开始我在想会不会flag就在这个图片里面,前面都是误导我的,然后直接复制粘贴那个链接,结果就是滑稽的原地址…… 只能将那个函数一个个看了

第一个if的作用:对传进来的page参数进行判断,如果page不是字符串或者page参数未设置,则会输出“you can not see it”并且返回flase直接就会输出滑稽图片了。

第二个if的作用:判断传入的page参数是不是whitelist数组里的,是则会返回true

 

然后mb_strpos(返回要查找的字符串在别一个字符串中首次出现的位置),返回了?第一次出现的位置,并且让page截取了从第一个字符到?之前的字符串(就是让我们构造hint.php?或者source.php?),第三个if:再次进行判断是否是whitelist数组里面的,如果是则返回true

后面urldecode函数(解码已编码的 URL 字符串)跟上一步以上,只是这一步怀疑你是写的编码的url(特别是问号?),便帮你解码再进行一样的判断,第四个if:最后判断是否是whitelist数组里面的,如果是则返回true。

如果三个条件全不满足,则输出“you can not see it”并且返回false输出滑稽笑脸

从第二个if开始到最后第四个if只要满足一种情况即可返回true,三选一,第一个if必须满足

代码审查完毕后,可以发现数组里面有个hint.php文件,我们便进入hint.php去看一下(不是在代码阶段下的目录,我们要返回到滑稽那个页面,记住这个数组也包括了我们之前看的source.php这个页面)

 告诉我们flag不在这里,在ffffllllaaaagggg里面,意味着我们要构造payload并且符合之前的条件,这里为啥不写flag,怀疑是提醒我们四个目录下(不过也可以一个一个试,因为只有这个线索了)

这里payload可以参考https://segmentfault.com/a/1190000018991087,我也是按着他的来分析情况然后构造payload的,自己还是记不住的,前面hint.php?是必须的,必须要通过那些if判断,否则传不进去,会返回一句你不能看到的英文 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值