攻防世界-easyphp-lever1
一.题目内容
前面都是和正常的学习题目一样,高亮去显示页面源代码。
拿到这种题目现找关键字flag。逆着条件去看,得到需要$key1和$key2两者都为真值的时候才会显示flag。
两个参数a,b作为get方式的参数。
二.解题分析
1.对于$key1
信息:两个判断语句
①.要求参数a存在
②.对参数a,intval()
是 PHP 中的一个内置函数,用于将变量转换为整数类型(integer)
③.参数a长度小于等于3
因为第三条所以第二条考虑使用使用科学技术法,对于php这种弱类型的,会想到1e9=1000000000
④.要求参数b存在
⑤.对于参数b进行md5编码,然后取末尾6位
这边我直接使用ai给的53724
2.对于$key2
①.要求c为数组
②.要求c[m]为不为数字
③.要求c[m]要大于2022
④.要求c[n]为数组
⑤.要求c[n][0]为数组
先考虑c[m]因为不为数字并且还要和数字比较,考虑到php为弱数据类型,因此c[m]符合条件的值为2023a,在比较是,a不会被识别,因此比较的时候c[m]为2023,符合条件
通过上述内容构造c为={"m":"2023q","n":[[],0]}
因此整个payload为:
?a=1e9&b=53724&c={"m":"2023a","n":[[],0]}