一、绕开口令长度限制
题目:
1.F12查看源码,发现有长度限制
2.方法1:使用hackbar或burpsuite将text=qingdaoshizipeixun post过去绕开长度检测。
方法2:直接删除该字段
3.得到flag
二、不在IP限制范围内
题目:
1.分析题目,发现其要求访问ip限制是8.8.8.8,因此考虑转发ip
2.打开burpsuite,找到该包的http头,在里面add X-FORWARD-FOR,值为8.8.8.8,点击forward
或将该请求send to repeated ,在里面添加X-FORWARD-FOR:8.8.8.8,点击Go
3.成功获取flag
三、MD5绕过
题目:
原理:当md5函数对数组进行计算时,会出错返回0
1.在url后面,添加?a[]=1&b[]=2。
2.获得flag
四、MD5碰撞
题目:
分析:首先可以看到变量md51的值是经过md5加密的字符串QNKCDZO,经过md5加密后得到0e830400451993494058024219903391。之后get到变量a,分析源代码可知,如果a的值不为QNKCDZO,并且md5的值也为0e830400451993494058024219903391,则会输出flag,但对于md5来说,这种情况是不存在的。再看源码,我们发现判断md51和md52是否相等的时候,使用了$md51 == %md52,这里使用的是 == (php中为松散比较)而不是 ===(php中为严格比较),也就是说md51和md52不需要完全相等。【php的松散比较可参考https://blog.csdn.net/baidu_41871794/article/details/83750615】
关于php的一点拓展:一个数字和一个字符串进行比较,PHP会把字符串转换成数字再进行比较。PHP转换的规则是:若字符串以数字开头,则取开头数字作为转换结果,若无则输出0。因此QNKCDZO经过md5加密后的值0e830400451993494058024219903391就会被转换成0,因此,只需要找到其他经过md5加密开头是0的值就可以了。
1.将a的值加到?a=xxxx中。
2.成功获取flag