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. 关于Java8:StreamAPI的一点记录

    关于 Stream ,Functional Interface 的一点记录 stream对于集合操作的便捷度提升: import java.util.ArrayList; import java.ut ...

  2. Dear ImGUI 使用指南

    文档 1)Dear IMGui 2) 知乎 组件 1) Com 如何设置动态字符串? //char*pTest = "aaaa\0bbbb\0cccc\0dddd\0eeee\0\0&quo ...

  3. Linux —— 命令

    Linux —— 命令 各种查看 查看文件绝对路径 pwd 查看某服务占用端口 netstat -ano |grep mysql Linux 下的复制粘贴 0.在KDE/Gnome下: 复制命令:Ct ...

  4. 3.1.3 Spring之AOP

    三.Spring之AOP 1. 代理模式 (1) 什么是代理模式? 代理模式是面向对象编程的23种基础设计模式之一.为其他对象(代理对象)提供一种代理以控制对这个对象(源对象)的访问. 就是说,声明一 ...

  5. Linux下利用文件描述符恢复的成功失败实验

    1.测试环境准备[oracle@redhat3 ~]$ uname -aLinux redhat3 2.6.32-573.el6.x86_64 #1 SMP Wed Jul 1 18:23:37 ED ...

  6. vue二、脚手架搭建

    1:安装nodeJs(下载一路回车) https://nodejs.org/zh-cn/ 2:检验nodeJs是否安装成功 (注意nodeJs是否添加到window路径中) 进入cmd -> n ...

  7. Qt QLabel 大小随内容自动变化 && 内容填充整个label空间

    图1:label的本身大小 图2:给label设置文字,不做任何别的设置 ui->label->setText(QObject::tr("current font is %1&q ...

  8. arcgis for JavaScript API 4.5与4.3的区别

    arcgis 4.5与4.3区别: 鉴于本人使用4.3时间比较久,而arcgis for JavaScript API于9月28日推出了4.5版本,但是直接更换4.5的init.js会出现意想不到的错 ...

  9. 1.1大数据平台架构及Hadoop生态圈

    1.硬件架构实例 2.软件架构实例 3.数据流通用概念模型 a.数据源(互联网.物联网.企业数据):App.Device.Site b.数据收集(ETL.提取.转换.加载):Flume.Kafka.S ...

  10. ubuntu16.04利用deb包安装mysql

    https://blog.csdn.net/zht741322694/article/details/79013093