首页 > 其他分享 > CTFer成长记录——CTF之Web专题·bugku—备份是个好习惯

CTFer成长记录——CTF之Web专题·bugku—备份是个好习惯

时间:2023-07-28 17:23:45浏览次数:45  
标签:Web bugku key2 key1 flag CTF str MD5 md5

一、题目链接

https://ctf.bugku.com/challenges/detail/id/83.html?id=83

二、解法步骤

  打开网站,发现是一串字符串:

  

  解码:[空密码]/[Empty String],无结果。题目提示“备份是个好习惯”,那么尝试访问index.php.bak和index.php.swp,这两个文件,看看存不存在。

于是在index.php.bak中获取到了一段代码文件:

de_once "flag.php";
ini_set("display_errors", 0);
$str = strstr($_SERVER['REQUEST_URI'], '?');
$str = substr($str,1);
$str = str_replace('key','',$str);
parse_str($str);
echo md5($key1);

echo md5($key2);
if(md5($key1) == md5($key2) && $key1 !== $key2){
    echo $flag."取得flag";

  通过代码审计:

  1. $str = strstr($_SERVER['REQUEST_URI'], '?'); 获取当前页面 URL 中 ? 后面的部分。
  2. $str = substr($str,1); 去掉 $str 第一个字符(即去掉 ?)。
  3. $str = str_replace('key','',$str); 将字符串中的 key 替换为空字符串。
  4. if(md5($key1) == md5($key2) && $key1 !== $key2) 判断 $key1 的 MD5 哈希值是否等于 $key2 的 MD5 哈希值,并且 $key1 不等于 $key2
  5. 如果条件满足,则输出 $flag."取得flag"

  因此,这题是一个双写绕过和md5弱比较绕过,于是我们构造如下payload:

  ?kkeyey1=s878926199a&kekeyy2=s155964671a,这段payload利用了md5的值也是字符串,只要能确保他们都是0e开头,那么通过弱比较后的值就都为0;

  flag{30dc9a980306fc42b9603c068a709545}取得flag。

  当然,也能利用数组MD5返回为NULL的特性也能解决,构造payload:?kkeyey1[]='aaa'&kekeyy2[]='bbb'也可以获得flag

三、总结

  本题考察源码泄露中的备份文件泄露,如果不知道备份文件的格式,可以用kali自带的disearch扫下网站;接着是比较常见的双写绕过与MD5弱比较绕过,比较简单。主要是要看懂代码。

标签:Web,bugku,key2,key1,flag,CTF,str,MD5,md5
From: https://www.cnblogs.com/miraclewolf/p/17588454.html

相关文章

  • web渗透测试 第1课:Web Pentester介绍
    来源:http://www.shanhubei.com/archives/2683.html什么是WebPentester?webforpentester是国外安全研究者开发的的一款渗透测试平台,通过该平台你可以了解到常见的Web漏洞检测技术。如:XSS跨站脚本攻击、SQL注入、目录遍历、文件包含、代码注入、命令注入、LDAP攻击、文件上......
  • 数据大屏web开发讲解
     数据大屏web开发讲解 前端大屏开发在项目中也比较常用,这里就有针对性的讲解一下。前端框架用的是vue。 大屏开发技术点:1. 可视化图表库echarts 。灵活应用。解决90%的大屏效果。2. SVG,大屏不失真。设计图的高还原度3. 数据动态效果。css动画。4. 大屏的适配......
  • Web Component 简单示例
    前言学习内容来源:https://www.youtube.com/watch?v=2I7uX8m0Ta0https://developer.mozilla.org/zh-CN/docs/Web/API/Web_components基本概念Customelement(自定义元素):class或者function,定义组件apiShadowDOM(影子DOM):用于将封装的“影子”DOM树附加到元素(与主文档DOM......
  • C# webapi 参数(AI)
    在C#WebAPI中,参数是用于接收和处理HTTP请求中传递的数据的方式。WebAPI支持不同类型的参数,包括路由参数、查询字符串参数、请求体参数和标头参数。以下是一些常用的WebAPI参数类型:路由参数(RouteParameters):路由参数从URL的路径中提取值。在WebAPI中,通常使用路由模板来定义路由......
  • WebFlux
    WebFlux个人理解:webflux跟springmvc功能类似,区别是实现异步非阻塞。是spring家族中的响应式web框架。以全新的java9后的响应式编程编写,具有前瞻性。同时,webflux是基于Reactor框架,并且以数据流处理为中心的框架。类型java中Stream流,具有流的一些特点。(需要关闭流了才传递)WebFlu......
  • # mac 使用 Docker 部署Python服务和web app服务最佳实践~保姆级教程
    目录部署Python后端服务部署python服务最佳实践部署web前端应用Docker同步到另一台设备部署Python后端服务部署python服务拉取python镜像dockerpullpython:3.9.13查看镜像dockerimages运行容器dockerrun-p9000:8080-it--namepytest-v~/PycharmPr......
  • ruby web 实战(10)-postgresql(1)
    目录user和installuser和install用户建议运行PostgreSQL在单独的用户帐户下。此用户帐户应仅拥有由服务器,不应与其他守护进程共享.特别是,建议该用户帐户不拥有PostgreSQL可执行文件,以确保受损的服务器进程无法修改这些可执行文件。PostgreSQL的预打包版本通常会在软......
  • 如何用DHTMLX组件为Web应用创建甘特图?(一)
    dhtmlxGantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表。可满足项目管理应用程序的所有需求,是最完善的甘特图图表库。甘特图仍然是项目管理应用程序中最需要的工具之一,DHTMLXGantt组件提供了能提升研发甘特图功能所需的重要工具。在这篇文章中,您将学习如何添加一个基本......
  • linux可视化管理 | webmin
    摘要介绍linux可视化管理介绍webmin如何使用一、基本介绍Webmin是功能强大的基于Web的Unix/linux系统管理工具。管理员通过浏览器访问Webmin的各种管理功能并完成相应的管理操作。除了各版本的linux以外还可用于:AIX、HPUX、Solaris、Unixware、lrix和FreeBSD等系统(这几......
  • 细说强网杯Web辅助
    8/27文章共计1908个词包括三段长代码今天的内容无图,流量不预警和我一起阅读吧1写在前面这里就借由强网杯的一道题目“Web辅助”,来讲讲从构造POP链,字符串逃逸到最后获取flag的过程2题目源码index.php获取我们传入的username和password,并将其序列化储存...if(isset($_GET['username......