zoukankan      html  css  js  c++  java
  • [极客大挑战 2019]BuyFlag

    查看前段发现一段php
    if (isset($_POST['password'])) {
        $password = $_POST['password'];
        if (is_numeric($password)) {
            echo "password can't be number</br>";
        }elseif ($password == 404) {
            echo "Password Right!</br>";
        }
    }
     
    抓包,可明显看到cookie中的user值为0,想到改为1。

     提示输入密码,PHP弱比较绕过password验证。

    password=404a或者是404%20或者404%00 hackbar post传参抓包修改绕过检查

    如果直接抓包改为post传参不要忘了将get改为post,并且还要添加Content-Type: application/x-www-form-urlencoded

    让你交钱,交!

     返回包说太长了 科学计数用1e9表示得到flag。

    另一种绕过长度限制的方法是利用老版本php strcmp函数的特性。

    strcmp ( string $str1 , string $str2 )
    
    参数 str1第一个字符串。str2第二个字符串。如果 str1 小于 str2 返回 < 0; 如果 str1 大于 str2 返回 > 0;如果两者相等,返回 0。
    
    可知,传入的期望类型是字符串类型的数据,但是如果我们传入非字符串类型的数据的时候,
    这个函数将会有怎么样的行为呢?实际上,当这个函数接受到了不符合的类型,这个函数将发生错误,
    但是在5
    .3之前的php中,显示了报错的警告信息后,将return 0 ,也就是虽然报了错,但却判定其相等

    所以传入money[]=1

     
  • 相关阅读:
    Guava入门第四章(Objects)
    Guava入门第三章(Preconditions)
    Guava入门第二章(Splitter)
    Guava入门第一章(Joiner)
    Docker入门第六章
    Docker遇到的问题
    Docker命令图
    2016-08-26-Java比较器的使用
    2017-10-6-MyBatis配置简述
    2017-9-17-Java Exception小结
  • 原文地址:https://www.cnblogs.com/akger/p/15062474.html
Copyright © 2011-2022 走看看