攻防世界-favorite_number

打开题目,看到一些php的代码,我们来审计一下

 第一个if

($stuff === $array && $stuff[0] != 'admin') //强等于,并且首元素不等于admin

(preg_match("/^\d+$/im",$num) //必须是纯数字,并且前面的/是开启了多行匹配,加上^和$,匹配开头和结尾,合起来就是匹配每行的开头和结尾

(!preg_match("/sh|wget|nc|python|php|perl|\?|flag|}|cat|echo|\*|\^|\]|\\\\|'|\"|\|/i",$num)) //过滤了很多的字符串,相当于一个黑名单

我们只要绕过这三个if,就可以执行system(),

看到了这里有个php的版本号,顺便百度了下这个php版本的漏洞,有一个整数溢出漏洞,这里就不给大家放链接了,大家自己动手找吧

漏洞就是说数组中[]里0的元素与4294967296的元素是一样的,所以可以进行绕过第一个if,第二个if我们用到%0a进行换行,这样就只能匹配到第一行,从而绕过,

可以看到成功返回数值了,我们进行抓包修改数据

成功执行,我们进行查看flag

这里被第三个if拦截掉了,我们用反引号进行绕过

 拿到flag。

本人菜鸟一枚,参考了下大佬的思路。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值