Day17

备份是个好习惯

听说备份是个好习惯
 
 
本题要点:MD5加密、.bak文件、 strstr()substr()str_replace()parse_str()函数用法
 
 
 
看到一串md5字符
解一下
 
emmm,只能换个思路
备份这个关键字!
我们可以用御剑扫扫
 
 
发现.bak文件
小知识:备份文件一般都是.bak或者.swp
把备份文件下载下来,打开之后是网页的源码。
 
 
复制网址,访问,弹出下载页面
 
 
 
 
 
几个函数的用法:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
解释一下
 
<?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://www.runoob.com/php/func-string-strstr.html
https://www.cnblogs.com/0yst3r-2046/p/10748412.html

Bugku-CTF之备份是个好习惯的更多相关文章

  1. http://www.bugku.com:Bugku——备份是个好习惯(http://120.24.86.145:8002/web16/)

      看了bugku的这道题,陌生又熟悉.     题目首先说[备份是个好习惯],访问网站只有一串字符,,,,,emmmmm,这句话表明人家经常做备份,所以咯,肯定在网站哪里备份有网页信息.嘻嘻   1 ...

  2. BugKu之备份是个好习惯

    题目:备份是个好习惯 思路分析 打开题目,看到一个字符串. 联系到题目,就猜到肯定是源代码泄露,用工具扫一下,发现了index.php.bak,验证了我的猜想,下载下来看看. <?php /** ...

  3. Bugku CTF练习题---MISC---telnet

    Bugku CTF练习题---MISC---telnet flag:flag{d316759c281bf925d600be698a4973d5} 解题步骤: 1.观察题目,下载附件 2.拿到手以后发现 ...

  4. Bugku CTF练习题---MISC---贝斯手

    Bugku CTF练习题---MISC---贝斯手 flag:flag{this_is_md5_and_base58} 解题步骤: 1.观察题目,下载附件 2.下载后进行解压,得到了一张图片.一个压缩 ...

  5. Bugku CTF练习题---MISC---眼见非实

    Bugku CTF练习题---MISC---眼见非实 flag:flag{F1@g} 解题步骤: 1.观察题目,下载附件 2.拿到手以后发现是一个压缩包,打开是一个Word文档,观察其中的内容,除了开 ...

  6. Bugku CTF练习题---MISC---宽带信息泄露

    Bugku CTF练习题---MISC---宽带信息泄露 flag:053700357621 解题步骤: 1.观察题目,下载附件 2.下载到电脑里发现是一个bin文件,二进制文件的一个种类,再看名称为 ...

  7. Bugku CTF练习题---MISC---这是一张单纯的图片

    Bugku CTF练习题---MISC---这是一张单纯的图片 flag:key{you are right} 解题步骤: 1.观察题目,下载附件 2.打开以后发现是一张图片,修改文件扩展名,查看属性 ...

  8. Bugku CTF练习题---加密---ok

    Bugku CTF练习题---加密---ok flag:flag{ok-ctf-1234-admin} 解题步骤: 1.观察题目,发现规律 2.发现所有内容都是ook写的, 直接上网搜索一下原因,发现 ...

  9. Bugku CTF练习题---加密---聪明的小羊

    Bugku CTF练习题---加密---聪明的小羊 flag:KEY{sad23jjdsa2} 解题步骤: 1.观察题目,发现其中的信息 2.经过题目判断,得知该题属于栅栏密码的一种,并且介绍中表明了 ...

随机推荐

  1. Spring Boot2.1.3全局跨域

    /** * 配置跨域访问 * * @author Terwer */ @Bean public WebMvcConfigurer corsConfigurer() { return new WebMv ...

  2. Windows10 正式企业版激活

    一.镜像 https://www.landiannews.com/archives/51102.html 二.ISO镜像文件比对SHA1值,判定文件是否被篡改 https://msdn.itellyo ...

  3. Mysql查询报错:Illegal mix of collations (gbk_chinese_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='

    使用sql别名关联查询的时候,由于字符集冲突导致该错误 解决方案,查询的时候强制转换字符集类型 case when column = '' then _gbk '' collate gbk_chine ...

  4. defaultdict(list)

  5. [linux系统]XFS (vda3):Corruption detected.Unmount and run xfs_repair 简单解决办法

    今天kvm的centos系统,rm -rf时报错,具体如下: rm: cannot remove ‘log-0/case1/log_net’: Input/output errorrm: cannot ...

  6. leetcode148. Sort List

    和数组里面的归并排序相同,用两个指针分别对应low high,递归进行归并排序然后merge把两个链表合在一起 /** * Definition for singly-linked list. * s ...

  7. LeetCode-7-反转整数-c# 版本

    c# 版本 // 给定一个 32 位有符号整数,将整数中的数字进行反转. public class Solution { public int Reverse(int x) { / // 边界判断 / ...

  8. ubuntu下zip文件操作

    转自 https://blog.csdn.net/hpu11/article/details/71524013 .zip $ zip -r myfile.zip ./* 将当前目录下的所有文件和文件夹 ...

  9. 工具方法: jQuery.方法() $.extend (小计)

    $.extend(布尔值,目标对象,合并对象,……)                布尔值 : true,深拷贝(递归拷贝)   false,浅拷贝(非递归拷贝)                   ...

  10. python小程序--one

    #!/usr/bin/env python # _*_ coding:utf8 _*_ import sys user_lock_file="user_lock.txt" # 用户 ...