• [极客大挑战 2019]BuyFlag


    最近也不是很忙,空闲时间还是很多,所以做点有意思的CTF,提升提升自己

    0x00 知识点

    1.php中的strcmp漏洞

    说明:

    int strcmp ( string $str1 , string $str2 )

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

    2.php中的is_numeric()漏洞

    is_numeric() 函数用于检测变量是否为数字或数字字符串。

    is_numeric函数对于空字符%00,无论是%00放在前后都可以判断为非数值,而%20空格字符只能放在数值后。所以,查看函数发现该函数对对于第一个空格字符会跳过空格字符判断,接着后面的判断!

    0x01 解题

    打开题目

     

    在另一个页面的源码里看见内容

    显然,password必须不是数字或数字字符串;然后还得弱类型比较符合404。

    is_numeric函数对于空字符%00,无论是%00放在前后都可以判断为非数值,%20必须放在数值后才可;

    弱类型的话404%00或404%20或404%0a都可

    我们先来抓包重放一下试试

    说明此时密码正确,还得传个money的值

    提示说数字太长,可能是后端做了某种比较限制,尝试%00截断,不行;

    尝试科学计数法,money=1e10,可以;

    尝试给个数组,money[]=111,可以。

    参考:https://www.cnblogs.com/wangtanzhi/p/12238883.html

  • 相关阅读:
    171. Excel Sheet Column Number (Easy)
    349. Intersection of Two Arrays (Easy)
    453. Minimum Moves to Equal Array Elements (Easy)
    657. Judge Route Circle (Easy)
    CSS笔记
    保存页面状态
    UI开发总结
    ubuntu 下配置munin
    反向代理配置
    JavaScript 高级程序设计第二版
  • 原文地址:https://www.cnblogs.com/zzjdbk/p/13470041.html
Copyright © 2020-2023  润新知