Loading

备份是个好习惯

备份是个好习惯

http://123.206.87.240:8002/web16/

 

 

 

通过提示 关键词 ’备份‘ 可以联想到 →  备份文件

备份文件一般都是.bak结尾的

 

用工具扫一下

这里推荐大佬的工具  yihangwang/SourceLeakHacker

 

https://git.coding.net/yihangwang/SourceLeakHacker.git

 

 

 可以看到index.php.bak

访问一下试试

 

有一个bak备份文件 ,不多解释了,下载后打开

 1 <?php
 2 /**
 3  * Created by PhpStorm.
 4  * User: Norse
 5  * Date: 2017/8/6
 6  * Time: 20:22
 7 */
 8 
 9 include_once "flag.php";
10 ini_set("display_errors", 0);  //in_set 设置指定配置选项的值
11 $str = strstr($_SERVER['REQUEST_URI'], '?');   //strstr 截取字符串
12 $str = substr($str,1);    // 返回字符串的一部分  1为字符串总数的返回开始位
13 $str = str_replace('key','',$str);  //在$str 中替换  key  为  ''
14 parse_str($str); //把字符串解析到变量里 这里可以这么理解字符串为key1=1,key2=2 → $key=1;$key2=2
15 echo md5($key1);
16 
17 echo md5($key2);
18 if(md5($key1) == md5($key2) && $key1 !== $key2){
19     echo $flag."取得flag";
20 }
21 ?>

 

 

 

 

 

11行  strstr 获得URI从'?'往后(包括'?')的字符串         stristr 同strstr用法一样,不区分大小写

12行  substr 去掉'?'

13行  str_replace 把字符串中的'key'替换为空可以使用类似这样的语句:kkeyey 处理

14行  parse_str 把字符串解析到变量中

 

 

end 最后需要得到key1,key2不相等而二者md5相等,可以利用php弱类型比较绕过

 

php弱类

https://www.cnblogs.com/Mrsm1th/p/6745532.html

https://cloud.tencent.com/developer/article/1046701

 

 

 

 

 

 

 


 

 

这里稍微提一下php弱类

 

首先,我们一般说php变量类型8种

 

标量类型:布尔boolean,整形integer,浮点float,字符string

 

复杂类型:数组array,对象object

 

特殊类型:资源resource,空null

 

 

与别的语言不同,php是一个弱类型的语言

==表示的是等于 ,只要数值等于就可以了,类型无所谓的

就是说上面列举的那些类型 之间相互比较  只看值就行了 不用看类型

 

 

 

php弱类型语言总的类型判断

php一个数字和一个字符串进行比较或者进行运算时,PHP会把字符串转换成数字再进行比较。

PHP转换的规则的是:若字符串以数字开头,则取开头数字作为转换结果,若无则输出0。

 

 

 

 

 

 

那么回过头来看题目(-_-)

这一题需要构造的是 $key1 == $key2

构造的要求是md5值相同,但未计算md5的值不同的绕过。

那我们就来构造  O(∩_∩)O

 

介绍一批md5开头是0e的字符串,

0e在比较的时候会将其视作为科学计数法,所以无论0e后面是什么,

0的多少次方还是0md5('240610708') == md5('QNKCDZO')成功绕过!

 

QNKCDZO
0e830400451993494058024219903391

s878926199a
0e545993274517709034328855841020
  
s155964671a
0e342768416822451524974117254469
  
s214587387a
0e848240448830537924465865611904
  
s214587387a
0e848240448830537924465865611904
  
s878926199a
0e545993274517709034328855841020
  
s1091221200a
0e940624217856561557816327384675
  
s1885207154a
0e509367213418206700842008763514

 

 

 

 

 

构造payload:?kkeyey1=QNKCDZO&kkeyey2=240610708

 

 

 

 

 

参考 :

https://blog.csdn.net/xuchen16/article/details/82756559

https://blog.csdn.net/eustiasora/article/details/79149411

posted @ 2019-03-28 16:27  Unixcs  阅读(1483)  评论(0编辑  收藏  举报