一、[极客大挑战 2019]BuyFlag
1.题目
2.解题步骤
MENU界面下有buyflag的界面,按F12看看
查了一下is_numeric()这个函数,他的作用是判断输入是否是数字的。如果是纯数字返回true,如果不是返回false。这道题注释的代码逻辑是要输入一个非纯数字的字符串且等于404,密码才能正确。
然后顺手百度了一下这个函数的漏洞,在这里贴出来:
这个函数和mysql结合起来就容易出问题,那是因为is_numeric判断的时候,当碰到16进制数的时候,也会判断成数字
is_numeric函数对于空字符%00,无论是%00放在前后都可以判断为非数值,而%20空格字符只能放在数值后。所以,查看函数发现该函数对对于第一个空格字符会跳过空格字符判断,接着后面的判断。[原博客]
根据第二条的特性可以构造一