题目:

打开网址出现:

看着像是两段重复的md5摘要,用解码工具解码,得到:

看出似乎是对空字符生成了md5码并输出,回头看题目描述:备份是个好习惯,猜测是查看备份文件

尝试输入网址 http://114.67.175.224:18504/index.php.bak,果然得到一个备份文件:index.php.bak

删除文件后缀名 .bak,打开文件:

php代码解释:

第11行:$str = strstr($_SERVER['REQUEST_URI'], '?');

$_SERVER[] 是预定义超全局数组变量的一种,是一个包含了诸如头信息(Header),路径(path),以及脚本位置(script location)等信息的数组

$_SERVER['RWQUEST_URI']是指访问的整个url网址,例如访问

"http://114.67.175.224:18504?key=123&b=4"   (以下举例都先用该url)

则$_SERVER['RWQUEST_URI']=  "http://114.67.175.224:18504?key=123&b=4"

strstr()函数:搜索一个字符串在另一个字符串中的第一次出现的位置,返回字符串的其余部分(从匹配点)。

因此第11行代码含义就是将整个url中?之后的部分赋予$str变量,如对于上诉网址,$str="?key=123&b=4";

第12行:$str = substr($str,1);

substr(string,start,length),函数返回字符串string的一部分,start为开始位置(默认开始为0),length为返回的字符串长度。

所以第十二行含义是$str="key=123&b=4" (按以上url)

第13行:$str = str_replace('key','',$str);

str_replace(find_s,replace,string),指用字符串relpace代替string中出现的字符串find_s,

则,第13行代码的含义是将$str中出现的所有"key"代替成空字符,结果如:$str="=123&b=4"

第14行:parse_str($str);

parse_str()函数可以将一串字符串解析成多个变量,按上例url,结果为:

$=123   $b=4

通过第15行和第17行输出了$key1和$key2的md5码,因为函数没有为$key1和$key2赋值。结合起初打开网页看到的两串解码为空字符的md5码,$key1和$key2均为空字符

根据这个if语句,可以推出当$key1和$key2的md5码相同,而$key1和$key2不同时,会输出flag,

因此可以结合函数输入网址:http://114.67.175.224:18504?key1=...&key2=..."为key1与key2赋值,

但由于第13行,会将字符串中的key字符替换,这里使用双写绕过替换规则:
即字符串写成"kkeyey1=...&kekeyy2=..."时,该函数只会替代源字符串的key,最终得到想要的结果"key1=...&key2=..."

进行到if语句判断,这里利用了php弱类型的漏洞:MD5绕过的技巧_网安溦寀的博客-CSDN博客

对于if(md5($key1) == md5($key2)),想要满足这个判断只需要构造出MD5值为0e开头的字符串,弱类型比较会认为字符串使用了科学技术法,0的多少次方都是0,因此可以绕过

因此只要使得$key1与$key2是两个不同的但是MD5码都是0e开头的字符串即可

输入网址:http://114.67.175.224:18504?kkeyey1=QNKCDZO&kekeyy2=240610708

得到结果:

ctf web 备份是个好习惯相关推荐

  1. BugKuCTF WEB 备份是个好习惯

    http://123.206.87.240:8002/web16/ 题解: MD5编码 d41d8cd98f00b204e9800998ecf8427ed41d8cd98f00b204e9800998 ...

  2. 【CTF bugku 备份是个好习惯】关于.bak备份文件,md5绕过

    知识点 常用的备份文件后缀有 .bak, .swp bak是备份文件的扩展名,现在很多软件都会创建备份文件,bak文件是各类软件产生的备份文件.打开bak文件的方法有简单,只需要知道它的生成软件,然后 ...

  3. CTF——Web网站备份源码泄露

    CTF--Web网站备份源码泄露 当遇到提示说到备份时,应该敏感地想到这是需要用到网站备份文件源码的. 一般这类题是和代码审计一起出的,一般都是需要获取到备份文件然后进行分析.下面就介绍一下网站备份的 ...

  4. BugKu CTF Web

    BugKu CTF Web 滑稽 计算器 GET POST Simple_SSTI_1 矛盾 eval 变量1 Simple_SSTI_2 alert 你必须让他停下 方法一 方法二 方法三 网站被黑 ...

  5. CTF Web题 部分WP

    1.web2 听说聪明的人都能找到答案 http://123.206.87.240:8002/web2/ CTRL + u 查看源代码 2.计算器 http://123.206.87.240:8002 ...

  6. CTF Web方向考点总结

    CTF Web 0X00 前言 做题已经快四个月了,接触了大大小小的题型,收藏的大师傅们的解题思路.题型总结的博客已经很多了,每次都要一个一个翻很麻烦,于是写下了这一个总结,实际上是把各大博客内容汇总 ...

  7. CTF——web个人总结

    CTF web个人总结 仅供个人参考 从0开始接触到了CTF,算是入门了,为了方便自己做题,现在记录一下web类型题目的解题思路. 目录 CTF web个人总结 工具(含后渗透) 解题思路 一.普通思 ...

  8. 从0到1学习CTF WEB

    从0到1学习CTF WEB web前置技能 信息泄漏 密码口令 SQL注入 基础比较薄弱,准备逐题刷CTFHub的web类型题目顺便学习一下web方面的安全知识. web前置技能 1.请求方式: 隐藏 ...

  9. web开发的一些工具技巧_有用的技巧可帮助您建立Web开发人员的良好习惯

    web开发的一些工具技巧 by Antoine Lechenault 通过安托万·莱切诺特(Antoine Lechenault) 有用的技巧可帮助您建立Web开发人员的良好习惯 (Useful ti ...

最新文章

  1. [原]不祥的CPU——Alpha
  2. 怎样学会单片机?先学什么,怎么入门?
  3. PCB 线宽与电流关系
  4. Python学习之字典
  5. ffmpeg库编译加文字_ffmpeg第三方库编译记录
  6. 《算法:C语言实现》—— 第二部分 —— 第3章 —— 基本数据结构
  7. PHPUnit简介及使用(thinkphp5的单元测试安装及使用)
  8. 转载 vue的基础使用
  9. 使用FormData进行Ajax请求上传文件
  10. mongodb和mysql的对比_MongoDB和MySQL的区别
  11. [git] 基础操作-02 分支和主支合并
  12. 【软件相关】Proteus 8入门教程
  13. 方法重写与方法重载的区别详解
  14. 广域网相关技术之FR帧中继、PPP、PPPOE
  15. 看猫解析专用可对接JSON解析弹幕播放器-所有后台功能一键管理
  16. openresty php 环境,从零搭建php环境-openresty
  17. [ISUX译]iOS 9人机界面指南(一):UI设计基础
  18. Git 04 ---用Idea合并git分支
  19. 广德现场:夜山明·潮牌酒倾情助阵第七届国际山地自行车开赛!
  20. 基于mediaprojection的手机群控软件

热门文章

  1. 社交类app开发( 仿陌陌 客户端+服务器端)
  2. 苹果WWDC大会:iOS求稳,AR求新,APP求全
  3. [python自动化]selenium实现超星某某通自动评论
  4. python控制台图片_Python实现图像信息隐藏
  5. 《Hadoop权威指南》---初识Hadoop
  6. Mathematica-1: 导入txt数据绘图
  7. [STM32F7] 【分享评测】移植JAM Player到Nucleo-STM32F767ZI-144
  8. python海龟画小猪佩奇动画片全集_用python画个小猪佩奇
  9. 计算机丢失mfc120u.dll,win10系统打开mindmanager软件提示mfc120u.dll丢失如何解决
  10. 我发表的论文,怎么跑到百度文库中了