[极客大挑战 2019]BuyFlag

知识点

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

解题

[极客大挑战 2019]BuyFlag
打开题目 打开payflag的功能菜单,提示flag需要100000000 money
[极客大挑战 2019]BuyFlag
结合上述提示可知 获得flag需要三个步骤

  1. a student from CUIT
  2. 输入正确的密码
  3. 输入正确的金额

第一点是身份验证,可以看一下cookie
[极客大挑战 2019]BuyFlag
查看源码发现这里有对密码的提示
[极客大挑战 2019]BuyFlag
根据审计可知 要绕过is_number函数 且 password值为404 所以 POST传参为:password=404%00
[极客大挑战 2019]BuyFlag
依次修改cookie和POST传参
[极客大挑战 2019]BuyFlag
下一步就是要传入money的值
[极客大挑战 2019]BuyFlag
这里提示数字太长了,因此我们可以推测可能是strcmp比较
[极客大挑战 2019]BuyFlag
抓个包 发现php版本为5.3.3 可以使用 数组绕过
[极客大挑战 2019]BuyFlag

上一篇:自定义排序(1030. 距离顺序排列矩阵单元格)


下一篇:App Transport Security(ATS) | 南峰子的技术博客