拿到题,一共有两个页面,一个Home,一个Payflag,很明显,flag实在第二个页面里得到的。
得到提示,需要有这么多钱还需要有密码,还必须是cuit的学生。除此之外,并没有告诉我们要如何去买flag。照例查看源代码,可以在最后发现一段提示代码:
按照这个的要求,我们需要用post传参传入money和密码,钱的值我们知道,且密码不能是数字或数字字符串。我们可以发现,这个等于的判断时弱等于,所以密码传入404x即可,使用hackbar传参可以解决这个问题,但是我们还必须是cuit的学生,没有头绪。
那就接着常规第二步:抓包查看线索:
既然是要求我们的身份,那我们知道,http头部里,代表身份的,在这个包里只有Cookie一个,而且看到,现在这个cookie是user=0,0为false,1为true,不管对不对我们先试一下:
提示变了!看来们是正确的,接下来就是密码了,post传参密码为404a (记得改包):
接下来就是掏钱去买flag了:
嗯???太长?!那就换一种短的计数法,科学计数法来传(16进制会显示钱不够…):
得到flag,这里每传一次参都要改一下包,嫌麻烦的话可以直接在重发器上改包,不用反复抓包改包。
另外我们也可以利用strcmp和is_numeric函数的漏洞来解,
即strcmp
实际上,当这个函数接受到了非字符串类型的参数,这个函数将发生错误,在5.3之前的php版本中,虽然显示了报错的警告信息,但仍将返回0。
is_numeric函数对前后有空字符%00的和最后有空格字符%20空格字符的参数都判断为非数字或数字字符串。
详细请参照大佬:
https://www.cnblogs.com/wangtanzhi/p/12238883.html