当前位置: 首页 > news >正文

i春秋-GetFlag(md5加密,字符串比较绕过)

练习平台地址

竞赛中心

题目描述

 题目内容

你好,单身狗,这是一个迷你文件管理器,你可以登录和下载文件,甚至得到旗帜

 点击登录

 发现capture需要满足条件substr(md5(captcha), 0, 6)=xxxxxx

编写python脚本破解验证码

import hashlibdef getMd5(index):"""函数用于在指定整数范围内查找一个整数,使得该整数转换为字符串后计算出的MD5值的前6位与传入的index参数匹配,若找到则返回该整数,若没找到返回None。:param index: 用于匹配MD5值前6位的目标字符串:return: 满足条件的整数或者None(表示没找到匹配的值)"""for i in range(100000, 100000000):num = itry:md5 = hashlib.md5(str(num).encode("utf8")).hexdigest()if md5[0:6] == index:return numexcept Exception as e:print(f"计算MD5值时出现异常: {e}")continuereturn Noneif __name__ == "__main__":result = getMd5("xxxxxx")if result is None:print("没有找到满足条件的整数")else:print("找到的整数为:", result)

尝试万能密码登录

成功登录并返回了文件信息

下载文件后发现提示

flag在根目录下

 抓取下载链接的包看能不能下载其他文件

发现f参数后跟着文件名,尝试修改

f=../../../../flag.php

根据平时利用小皮面板搭建网站的经验猜测

 /var/www/html/flag.php

 /var/www/html/Challenges/flag.php

成功得到源码

<?php
$f = $_POST['flag'];
$f = str_replace(array('`', '$', '*', '#', ':', '\\', '"', "'", '(', ')', '.', '>'), '', $f);
if ((strlen($f) > 13) || (false !== stripos($f, 'return'))) {die('wowwwwwwwwwwwwwwwwwwwwwwwww');
}
try {eval("\$spaceone = $f");
} catch (Exception $e) {return false;
}
if ($spaceone === 'flag') {echo file_get_contents("helloctf.php");
}

代码分析

1.定义一个变量f,通过POST传入

2.对变量f进行字符串 =过滤

3.如果f的长度大于13或则f中有return就输出wowwwwwwwwww并退出

4.如果触发异常(f的字符等于spaceone的)会返回false

5.如果spaceone的值等于flag这个字符串就输出helloctf.php文件的内容

 绕过思路

1.flag='flag';

 2.PHP字符串的特别表示方式,传值时进行url编码

flag

flag{0d960bc3-186b-4a10-a749-4eaef43ae6c6}

注意事项

POST传值两种方式:

1.HackBar插件添加参数

2.Burp抓包修改请求方式后添加参数

http://www.lryc.cn/news/489343.html

相关文章:

  • SpringBoot中设置超时30分钟自动删除元素的List和Map
  • 入门车载以太网(6) -- XCP on Ethernet
  • DAY4 网络编程(广播和多线程并发)
  • C++个人复习(4)
  • Dockerhub镜像加速
  • 11.20讲座笔记
  • 网络协议之UDP
  • Elasticsearch面试内容整理-常见问题和解决方案
  • React 表单Form 中的 useForm
  • 用指针函数寻找数组中的最大值与次大值
  • 人工智能在金融领域的创新与应用
  • shell脚本(4)一文解决比较运算符用户交互
  • windows 操作系统下载 Android源码教程
  • 【AIGC】如何使用高价值提示词Prompt提升ChatGPT响应质量
  • vue3-input 搜索框
  • 记录eslint报错的情况
  • mongodb多表查询,五个表查询
  • Git Bash + VS Code + Windows11 Git命令报错莫名奇妙的问题
  • 湛江市社保卡申领指南:手机获取电子照片回执单号
  • Linux离线安装Docker命令,简单镜像操作
  • 【Node.js】Node.js 和浏览器之间的差异
  • 基于MySQL的 CMS(内容管理系统)的表结构设计
  • 2.13 转换矩阵
  • 【C语言】遗传算法matlab程序
  • Java LinkedList 详解
  • mac-mini的时间机器,数据备份到alist 中的网盘
  • 【HarmonyOS】鸿蒙应用加载读取csv文件
  • Java retainAll() 详解
  • Redis的基本数据类型
  • 通过vite+vue3+pinia从0到1搭建一个uniapp应用