MD5(哈希)绕过问题
$a != $b md5($a) == md5($b)
对于这个问题我们称为“哈希冲突”对吧!(hash碰撞属于这里面的一种)
int h[maxn],e[maxn],ne[maxn],idx; ////h[]是哈希函数的一维数组 //e[]是链表中存的值 //ne[]是指针存的指向的地址 //idx是当前指针 void insert(int x) { int k=(x%maxn + maxn)%maxn; ////对负数的处理,k是哈希值 e[idx]=x;ne[idx]=h[k];h[k]=idx++; //如果不同单链表的idx都是从0开始单独计数, //那么不同链表之间可能会产生冲突。 //比如如果第0个节点被分配给了第一个单链表,那么所有单链表就只能从下一个节点开始分配,所以所有单链表需要共用一个idx
言归正传:
可以利用弱类型中的“科学技术法”记录即可
科学技术法:
0e3872947982739(后面一串数字)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~分界线
若是强类型的呢?
$a != $b md5($a) === md5($b)
那我们就需要用数组解决就好了
NULL === NULL MD5(array) -> NULL
这个可以自己演示一遍,无论是什么数组,都会输出NULL
若你想在数组里面加入参数应该怎么办?
直接加呗!(PS:这里的plus可不是我们写的C++中的+ 而是 &)
写成代码就是:
php?a[] = 1 & a[] = 2 & a[] = 3
但也要注意我们没有申明a数组的时候默认键值为 0 , 1, 2...(跟离散化均值和方差计算一样!)
我们需要申明的时候就直接在a[ ]里面写上你需要的就好啊 eg:a[x] = 1 输出的键值是x
一种经典题:
1.通过URL传$a 是数组
2.检查$a[0] 和 $a[1] 很严格的过滤
3.取$a[ ]的前两位做拼接,执行危险命令
传数组的话顺序是按照你传上去的数组顺序定的,你如果先传人$a[3] = 1 & $a[4] = 2 & $a[0] = 0 &a[1] = 0 这么看你就直接绕过了前两个(毕竟你前两个都做拼接了)注意你要检查$a[0] & a[1]哇!
这里总结一下:
0e开头的md5和原值:
QNKCDZO
0e830400451993494058024219903391
240610708
0e462097431906509019562988736854
s878926199a
0e545993274517709034328855841020
s155964671a
0e342768416822451524974117254469
s214587387a
0e848240448830537924465865611904
s214587387a
0e848240448830537924465865611904
s878926199a
0e545993274517709034328855841020
s1091221200a
0e940624217856561557816327384675
s1885207154a
0e509367213418206700842008763514
s1502113478a
0e861580163291561247404381396064
s1885207154a
0e509367213418206700842008763514
s1836677006a
0e481036490867661113260034900752
s155964671a
0e342768416822451524974117254469
s1184209335a
0e072485820392773389523109082030
s1665632922a
0e731198061491163073197128363787
s1502113478a
0e861580163291561247404381396064
s1836677006a
0e481036490867661113260034900752
s1091221200a
0e940624217856561557816327384675
s155964671a
0e342768416822451524974117254469
s1502113478a
0e861580163291561247404381396064
s155964671a
0e342768416822451524974117254469
s1665632922a
0e731198061491163073197128363787
s155964671a
0e342768416822451524974117254469
s1091221200a
0e940624217856561557816327384675
s1836677006a
0e481036490867661113260034900752
s1885207154a
0e509367213418206700842008763514
s532378020a
0e220463095855511507588041205815
s878926199a
0e545993274517709034328855841020
s1091221200a
0e940624217856561557816327384675
s214587387a
0e848240448830537924465865611904
s1502113478a
0e861580163291561247404381396064
s1091221200a
0e940624217856561557816327384675
s1665632922a
0e731198061491163073197128363787
s1885207154a
0e509367213418206700842008763514
s1836677006a
0e481036490867661113260034900752
s1665632922a
0e731198061491163073197128363787
s878926199a
0e545993274517709034328855841020
本文来自博客园,作者:Alaso_shuang,转载请注明原文链接:https://www.cnblogs.com/Alaso687/p/16967467.html