Day17

 

备份是个好习惯

听说备份是个好习惯 http://123.206.87.240:8002/web16/ Bugku-CTF之备份是个好习惯 随笔 第1张 Bugku-CTF之备份是个好习惯 随笔 第2张   Bugku-CTF之备份是个好习惯 随笔 第3张 Bugku-CTF之备份是个好习惯 随笔 第4张   本题要点:MD5加密、.bak文件、 strstr()substr()str_replace()parse_str()函数用法       看到一串md5字符 解一下 Bugku-CTF之备份是个好习惯 随笔 第5张 Bugku-CTF之备份是个好习惯 随笔 第6张.   emmm,只能换个思路 备份这个关键字! 我们可以用御剑扫扫   Bugku-CTF之备份是个好习惯 随笔 第7张 Bugku-CTF之备份是个好习惯 随笔 第8张   发现.bak文件 小知识:备份文件一般都是.bak或者.swp 把备份文件下载下来,打开之后是网页的源码。   Bugku-CTF之备份是个好习惯 随笔 第9张 Bugku-CTF之备份是个好习惯 随笔 第10张   复制网址,访问,弹出下载页面 Bugku-CTF之备份是个好习惯 随笔 第11张 Bugku-CTF之备份是个好习惯 随笔 第12张   Bugku-CTF之备份是个好习惯 随笔 第13张 Bugku-CTF之备份是个好习惯 随笔 第14张         几个函数的用法: Bugku-CTF之备份是个好习惯 随笔 第15张 Bugku-CTF之备份是个好习惯 随笔 第16张       Bugku-CTF之备份是个好习惯 随笔 第17张 Bugku-CTF之备份是个好习惯 随笔 第18张       Bugku-CTF之备份是个好习惯 随笔 第19张           Bugku-CTF之备份是个好习惯 随笔 第20张 Bugku-CTF之备份是个好习惯 随笔 第21张   Bugku-CTF之备份是个好习惯 随笔 第22张 Bugku-CTF之备份是个好习惯 随笔 第23张     解释一下   <?php   include_once "flag.php";   //包含 flag.php 文件 ini_set("display_errors", 0);   //设置不返回错误信息 $str = strstr($_SERVER['REQUEST_URI'], '?');     //判断URL里是否有问号,存在就返回给 $str $str = substr($str,1);   //获取 ? 后面的值 $str = str_replace('key','',$str);       //将 $str 里面的 key 替换为空 parse_str($str);//解析字符串echo md5($key1);       //将 key1 进行 MD5 加密并输出   echo md5($key2);                     //将 key2 进行 MD5 加密并输出if(md5($key1) == md5($key2) && $key1 !== $key2){ echo $flag."取得flag";                      //如果 key1 和 key2 的值不相等,但是两个的 MD5 相等,就返回 flag } ?>   分析这段代码,可知: 网页URL应该有两个参数key1和key2,网页显示key1、key2的md5值,如果这俩值比较相等,则显示flag、“取得flag”。 网页已显示的原来是俩默认的md5值哦。现在关键,得到flag,需不同的key1和key2的md5值比较相等。   那么,如何绕过两个不同的值有 相同的 MD5?   MD5值比较相等(PHP弱类型)   在PHP中,== 在进行比较的时候,会先将字符串类型转化成相同,再比较。注意,如果比较一个数字和字符串 或者 比较涉及到数字内容的字符串时,则字符串会被转换成数值并按照数值来进行比较。   举个小例子: var_dump('asdas',0); 和 var_dump('0asdas',0); 的结果都是true。   所以,本题是要两MD5值的字符格式要么全部是字符,要么前面数字是0。
  1.    我们都知道,MD5 加密是对字符串进行加密,那么如果我们传入的不是字符串,而是一个数组呢? 它没法进行加密,返回空,结果不就相等了吗?
  1.   众所周知,科学计数法是 *e***** ,那么要使两个数的值相等,就只能是 0e***** ,所以只要找到两个加密之后是 0e 开头的数字,就可以绕过限制了。
QNKCDZO 240610708 s878926199a s155964671a s214587387a s214587387a ... ... 更多有关 md5碰撞的小知识请见:    https://www.cnblogs.com/0yst3r-2046/p/10748412.html   注意~ 前面之所以传入的是 kkeyey1 而不是 key1 ,是为了绕过 str_replace 这个函数的限制,这个函数将 key 替换为空,剩下的拼接在一起正好就成了 key1.     方法一: 构造 http://123.206.87.240:8002/web16/?kkeyey1=240610708&kkeyey2=QNKCDZO   Bugku-CTF之备份是个好习惯 随笔 第24张 Bugku-CTF之备份是个好习惯 随笔 第25张     方法二: 根据前面的分析,我们可以构造:   http://123.206.87.240:8002/web16/?kkeyey1[]=wsafe&kkeyey2[]=sjkfsfd   Bugku-CTF之备份是个好习惯 随笔 第26张 Bugku-CTF之备份是个好习惯 随笔 第27张         完成!   参考资料: http://www.runoob.com/php/func-string-strstr.html https://www.cnblogs.com/0yst3r-2046/p/10748412.html
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。