网站推广的方法及特点,wordpress 不用mysql,网页制作详细设计,wordpress幻灯片非插件PHP弱类型 在进行比较的时候#xff0c;会先判断两种字符串的类型是否相等#xff0c;再比较 在进行比较的时候#xff0c;会先将字符串类型转化成相同#xff0c;再比较 如果比较一个数字和字符串或者比较涉及到数字内容的字符串#xff0c;则字符串会被转换成数值 并且…PHP弱类型 在进行比较的时候会先判断两种字符串的类型是否相等再比较 在进行比较的时候会先将字符串类型转化成相同再比较 如果比较一个数字和字符串或者比较涉及到数字内容的字符串则字符串会被转换成数值 并且比较按照数值来进行
转化规则
字符串的开始部分决定了它的值如果该字符串以合法的数值开始则使用该数值否则其值为0。 e和E表示科学计数法
md5绕过
弱类型比较绕过
弱类型比较绕过 题目:
$a!$b
md5($a)md5($b)解题思路:
找到不同$a和$b两者的md5值均为0e开头的形式null值绕过
题目:
$a$b
md5($a)md5($b)解题思路:
使$a和$b为两个不同的数组 (array)
两者的md5值均为null。碰撞绕过
题目:
(string)$a!(string)$b
md5($a)md5($b)解题思路:
md5碰撞找到两个不同的数据但是两者的md5值相同。习题讲解
第一关:
intval是取整的意思
在php7中intval(‘2e4’) 等于20000 而intval(‘2e4’1)等于20001 这个是正常的值
在php5中intval(‘2e4’) 等于2 而intval(‘2e4’1)等于20001 这个是因为php5有bug
我们通过查看http请求报文get可以看到往下移可以看到他使用的协议是php5
第二关:
他判断我们也没有传入md5的值有的话他会把我们传入的这个值赋值给md5然后判断我们赋值的md5是否等于我们当前值进行md5运算后的值
这里我们可以通过 是不完全比较我们可以通过0e类型来绕过
第三关:
我们可以看到我们输入一个get_flag 他一眼是吧我们传入的这个参数给get_flag
strstr是判断这个变量里面有没有空格前面加个那就是里面这个参数不能有空格
他对我们这个变量进行str_irplace 这个函数是php中替换的函数如果我们变量里面有第一个cat他会进行替换成wctf2020 system是输出get_flag这个值就是我们要的东西
那我们就用ls查看文件发现我们要的文件是flag.php ${IFS}是空格的意思
more${IFS}flag.php