拿到题目提示post传参还以为是道签到题
刚开始直接把自己极客大挑战的username以及password怼上去,但是不对。看看F12,有提示。
当一个搜索蜘蛛访问一个站点时,它会首先检查该站点根目录下是否存在robots.txt,如果存在,搜索机器人就会按照该文件中的内容来确定访问的范围;如果该文件不存在,所有的搜索蜘蛛将能够访问网站上所有没有被口令保护的页面。
这里注意URL别直接全复制下来了.
提示使用浏览器,直接改包。
改referer。
根据Referer的定义,它的作用是指示一个请求是从哪里链接过来 ,那么当一个请求并不是由链接触发产生的,那么自然也就不需要指定这个请求的链接来源
。
既然是从localhost访问,直接X-Forword-For:127.0.0.1
接下来提示使用代理,via:Syc.vip
到最后一步,server函数会原本输出HTTP_后面的内容,直接弱相等。
EASY PHP
先看代码,第一步很简单,这里不区分大小写,匹配到Happy to seek 2023!即可("/i"不区分大小写)
第二步,首先我们得先找到intval函数的意思是化为整数,一般来说一个小于2023的数不可能加一后大于2024,所以这里得使用科学计数法。
lover 在 第二个intval() 函数中以 表达式 的形式出现,字符串在与数值进行运算时,PHP 会将字符串转化为数值。使用科学计数法的数值(字符串) 在某些版本中无法被 intval() 正确解析,但 PHP 是认得它的,在与数值 1 进行加法运算时,lover 将被 PHP 正确解析。于是,我们尝试将lover=2e4,直接绕过。
第三步,这里是一个哈希碰撞
抛开题目,有个大佬举了个例子:
md5不能加密数组,传入数组会报错,但会继续执行并且返回结果为null
比如将两个数组的md5值进行比较
md5(a[]=1) === md5(b[]=1)
由于md5函数无法处理数组,会返回null,所以md5加密后的结果是下面这样
null === null
结果返回true,也就是说数组的md5值进行比较时,结果相等
需要注意的是0e绕过只能绕过弱类型比较(==),而数组绕过不只可以绕过弱类型比较,还可以绕过强类型比较(===)
弱类型比较(==),只判断内容是否相等,如果是字符串类型,则转换成数值型后进行判断
强类型比较(===),判断内容的基础上,还会判断类型是否相同
原文链接:MD5加密漏洞(MD5绕过方式-0e绕过/数组绕过/MD5碰撞/MD5SQL注入)_md5漏洞-CSDN博客,
直接一波数组绕过即可
最后
这里是真的狗,由于PHP8.0以下如果第一次出现类似于"["这样的非法符号,会将第一个非法符号转化为下划线,第二个不会转,所以这里是变量出了问题,所以改一下就好了。
这是当初打极客大挑战的一点小笔记,希望能够帮助大家!