攻防世界 easyphp

打开场景

 这种难度为1的题目,可能是把代码都放前端,让我们读。可以看到要传3个参数a、b、c

a满足:转换为整数后大于6000000&&长度<=3,1e7 1e8 1e9都可以

b满足:md5加密后,后6位是8b184b,这里暴力枚举一下就行

c满足:json格式的数组,有两个索引c[m],c[n]。c[m]满足非数字&&>2022。c[n]满足 是数组&&长度为2&&c[n][0]是数组。c[n]还要满足通过array_search()能匹配到“DGGJ”,通过逐项枚举,不真等于(===)“DGGJ”

c稍微麻烦点,首先是个jason格式的数组{“m":"3022a",”n":[[1,2],0]}

这样是可以通过的。但是有个问题。php8.1 array_search()应该是对底层实现优化了,array_search我估计是逐项枚举,判断是否相等(==),之前的版本是转换成数字比较,”DGGJ"会转换成0,这样c[n][1]=0就可以匹配上了。但是新版本是都转换成字符串,逐项比对ascii码。所以用新版的php自己验证可能不通过。

同样的c[m]和2022比较,如果c[m]=102056a,旧版本会被转换为102056,与2022比较。但是新版本可能转换成ascii逐项比较。不过今天又复现不出来了,先记录一下,欢迎交流

posted @ 2024-05-08 09:15  超级学渣渣  阅读(165)  评论(0编辑  收藏  举报