PHPのMD 5()関数の脆弱性
5431 ワード
文書ディレクトリ 1. MD 5関数脆弱性 2.PHP特性 3.MD 5衝突 1.MD 5関数の脆弱性
上記の式を成立させるには、aとbの値は等しくないが、md 5後の値は等しい.
md 5(str)QNKCDZO 240610708 s 878926199 a s 155964671 a s 214587387 a s 214587387 a sha 1(str)sha 1後0 Eでsha 1(‘aaroZmOk’)sha 1(‘aaK 1 STfY’)sha 1(‘aaO 8 zKZF’)sha 1(‘aa 3 OFF 9 m’)
最後に
2.PHP特性
成立条件はa 1とa 2の値は等しくないがmd 5後の値は等しい.ここでは
3.MD 5衝突
これと2つ目の違いは,入力された最後に文字列に変換して比較するので,配列はだめである.2つのMD 5の値が同じ異なる文字列しか構築できません.次はurl符号化された2つの値のセットです.
$_GET['a'] != $_GET['b']
&&
MD5($_GET['a']) == MD5($_GET['b'])
上記の式を成立させるには、aとbの値は等しくないが、md 5後の値は等しい.
==
比較なので、値が等しいかどうかだけを判断し、タイプが同じかどうかは判断しません.異なるタイプが同じタイプに変換されてから比較され、PHPがハッシュ文字列を処理すると、0E
の先頭のハッシュ値が0と解釈されます.したがって、両方の値がmd 5を通過した後の値が0E
で始まると、等しい.md 5(str)QNKCDZO 240610708 s 878926199 a s 155964671 a s 214587387 a s 214587387 a sha 1(str)sha 1後0 Eでsha 1(‘aaroZmOk’)sha 1(‘aaK 1 STfY’)sha 1(‘aaO 8 zKZF’)sha 1(‘aa 3 OFF 9 m’)
最後に
a=QNKCDZO&&b=240610708
を構成すれば迂回することができる.2.PHP特性
$_POST['a1']!==$_POST['a2']
&&
md5($_POST['a1'])===md5($_POST['a2'])
成立条件はa 1とa 2の値は等しくないがmd 5後の値は等しい.ここでは
===
なので、比較値が等しいだけでなく、値タイプが同じかどうかも比較できます.0 Eはここでは使用できません.phpではmd 5もsha 1も配列を処理できずNULLを返すのでa1[]=1&&a2[]=2
を構築すれば迂回できる.3.MD 5衝突
(string)$_POST['a1']!==(string)$_POST['a2']
&&
md5($_POST['a1'])===md5($_POST['a2'])
}
これと2つ目の違いは,入力された最後に文字列に変換して比較するので,配列はだめである.2つのMD 5の値が同じ異なる文字列しか構築できません.次はurl符号化された2つの値のセットです.
param1=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%00%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1U%5D%83%60%FB_%07%FE%A2
param2=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%02%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1%D5%5D%83%60%FB_%07%FE%A2
Param1=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%00%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%55%5d%83%60%fb%5f%07%fe%a2
Param2=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%02%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%d5%5d%83%60%fb%5f%07%fe%a2