知识点
is_numberic:可以使用%00和%20绕过
strcmp():这一个漏洞适用与5.3之前版本的php
strcmp('str1','str2')
if(str1>str2) return >0
if(str1<str2) return <0
if(str1 == str2) return 0
if(str1 = arry[] && str2 = string) return 0
解题
打开题目 打开payflag的功能菜单,提示flag需要100000000 money
结合上述提示可知 获得flag需要三个步骤
- a student from CUIT
- 输入正确的密码
- 输入正确的金额
第一点是身份验证,可以看一下cookie
查看源码发现这里有对密码的提示
根据审计可知 要绕过is_number函数 且 password值为404 所以 POST传参为:password=404%00
依次修改cookie和POST传参
下一步就是要传入money的值
这里提示数字太长了,因此我们可以推测可能是strcmp比较
抓个包 发现php版本为5.3.3 可以使用 数组绕过