md5加密相关问题

强比较:使用三个 ‘’===’’ 比较,比较值,也比较类型

弱比较:使用两个 ‘’==’’ 比较,只比较值,不比较类型

​ a==b 将a,b的值转换成同类型再比较值

​ a===b 先判断a,b类型,若相同,则比较值,若不相同,则返回false

为什么会存在0e绕过?

其实主要是因为科学计数法的存在0e232的表示形式就像是0x10的232次方一样,其在==比较中被认为是和0相等的那么当我们用两个0e来进行比较时他们不就相等了吗,但是在三个等号的比较中其实这被认为是不相等的他会直接让他们去比较,不再去让其进行内部运算追求极致相等.这点你可以尝试一下

1
2
3
4
5
6
7
8
<?php
$v1 = $_GET['v1'];
$v3 = $_GET['v3'];
var_dump($v1 == $v3);
var_dump($v1 === $v3);
get传参:
v1=1e1&v3=10
它返回的是true false

相关口诀

1
2
3
4
5
6
数组绕过,0e绕过
QNKCDZO 240610708 常用
md5($a)==md5(md5($a))
0e215962017
MD5加密登录万能通用
ffifdyop

加密后的密文 原值

QNKCDZO 0E830400451993494058024219903391

240610708 0E462097431906509019562988736854

s878926199a 0E545993274517709034328855841020

s155964671a 0E342768416822451524974117254469

s214587387a 0E848240448830537924465865611904

双重md5下的0e绕过

以下字符串进行两次md5后以0e开头

  • 7r4lGXCH2Ksu2JNT3BYM
  • CbDLytmyGm2xQyaLNhWn
  • 770hQgrBOjrcqftrlaZk

自身与md5处理后弱相等

对于0e215962017,md5后也是以0e开头

如果遇到了强比较且不允许数组绕过可以利用fastcoll_v1.0.0.5.exe

进行碰撞生成md5相同的东西

利用方法

终端打开

输入命令fastcoll_v1.0.0.5.exe -p test.txt -o 1.txt 2.txt