md5 collision
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了md5 collision相关的知识,希望对你有一定的参考价值。
题目源代码:
1 <?php 2 $md51 = md5(‘QNKCDZO‘); 3 $a = @$_GET[‘a‘]; 4 $md52 = @md5($a); 5 if(isset($a)){ 6 if ($a != ‘QNKCDZO‘ && $md51 == $md52) { 7 echo "nctf{*****************}"; 8 } else { 9 echo "false!!!"; 10 }} 11 else{echo "please input a";} 12 ?>
问题出在代码 $md51==$md52 上
PHP涉及比较内容时存在一个特点:
如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转换为数值并且比较按照数值来进行。当用 === 或 !== 进行比较时则不进行类型转换,因为此时类型和数值都要比对。
观察
$md51=md5(‘QNKCDZO‘)=0e830400451993494058024219903391=0
所以只需要得到一个MD5值为0exxxxxx如此的值就可。
答案:
aabg7XSs
240610708
以上是关于md5 collision的主要内容,如果未能解决你的问题,请参考以下文章
pwnable.krToddler‘s Bottle-[collision]
路径规划 The Dynamic Window Approach to Collision Avoidance (附python代码实例)