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

CTFSHOW web入门 爆破 web23

web23

进行代码审计

<?php /* # -*- coding: utf-8 -*- # @Author: h1xa # @Date: 2020-09-03 11:43:51 # @Last Modified by: h1xa # @Last Modified time: 2020-09-03 11:56:11 # @email: h1xa@ctfer.com # @link: https://ctfer.com */ error_reporting(0); //出现错误信息时不报错 include('flag.php'); //包含了flag.php if(isset($_GET['token'])){ //检查GET请求中token是否存在并且不为NULL $token = md5($_GET['token']); //把经过md5函数转换后的token赋值给变量$token if(substr($token, 1,1)===substr($token, 14,1) && substr($token, 14,1) ===substr($token, 17,1)){ //查看$token中的第2个字符是否和第15个字符相等,并且那第15个和第18个也进行强比较,看是否相等 if((intval(substr($token, 1,1))+intval(substr($token, 14,1))+substr($token, 17,1))/substr($token, 1,1)===intval(substr($token, 31,1))){ //第2位加上第15位在加上第18位/第2位强等于第32位,满足条件输出flag echo $flag; } } }else{ highlight_file(__FILE__); } ?>

题目条件:判断 2、15、18 位是否相同,第二层能够直接套用一个公式(intval(x)+intval(x)+x)/x,(8+8+8)/8 = 3,也就是(x+x+x)/x=3,所以可以直接判定 32 位是 3 了

通过代码审计,已经知道了获得 flag 的条件了,写一个 python 代码进行爆破

import hashlib //导入python的哈希库 for i in range(1, 1000000): s = str(i) //把数字变成字符串 m = hashlib.md5(s.encode()).hexdigest() //算MD5 if m[1] == m[14] == m[17]: //判断2、15、18 位是否相同 if m[1] in "123456789": //要求这个相同字符必须是非0数字,这是因为避免除以0,避免字母参与整数转换,能够让公式直接成立 if m[31] == '3': //通过前面两个条件成立的前提下,原题第二层公式能够化简成这个 print("token =", s) print("md5 =", m) break

token=422

ctfshow{e67404be-9c37-4537-9f36-580ffdbe0a5e}

本题考点:代码审计、写脚本

知识点:md5()、substr()、intval()

md5():对字符串做 MD5 哈希

特点:

输出固定 32 位,

是十六进制字符串

常用于校验、哈希题、CTF 构造题

substr(字符串, 起始位置, 长度):从字符串中截取一部分,从 0 开始算

intval():把内容转换成整数

http://www.jsqmd.com/news/541588/

相关文章:

  • 为什么3分钟搞懂AI
  • 【2026最新】IDEA 2025.3最新安装教程
  • 使命召唤系列合集COD 1-21部 中文版 全DLC+MOD修改器 PC单机联机游戏射击游戏
  • 破解语言壁垒:Translumo颠覆实时屏幕翻译的跨语言工具革命
  • 基于springboot数学库组卷系统设计与开发(源码+精品论文+答辩PPT等资料)
  • 零代码玩转OpenClaw:ollama-QwQ-32B自动化脚本生成教程
  • 浏览器窗口最小化的时候,setInterval 执行变慢,解决方案
  • GetQzonehistory终极指南:一键备份QQ空间所有历史说说完整教程
  • 2026工业加固计算机优质推荐榜适配极端工况 - 优质品牌商家
  • 终极Mac鼠标兼容性解决方案:如何用Mac Mouse Fix让第三方鼠标比苹果触控板更好用 [特殊字符]
  • YOLOv8-CopyPaste:基于复制粘贴增强的小目标与遮挡检测算法改进
  • 实战驱动:告诉快马你的vue项目类型,获取量身定制的环境与示例
  • Apache IoTDB Web Workbench:时序数据库可视化管理平台技术白皮书
  • 2026便携式加固计算机优质品牌推荐指南:工业加固计算机/工业平板电脑/工控机/无人机地面站加固计算机/选择指南 - 优质品牌商家
  • JAVA 国际版同城拼车系统源码 顺风车预约服务平台搭建全攻略
  • Bypass Paywalls Clean:3步搞定付费内容,你的免费阅读神器
  • 双模型灾备方案:OpenClaw同时接入ollama-QwQ-32B与云端API的实践
  • 傅里叶变换与拉普拉斯变换:从公式到工程应用的全面解析
  • 【基于Tube的非线性系统模型预测控制MPC】基于鲁棒控制不变集的管式模型预测控制方案及其在利普希茨非线性系统中的应用附Matlab代码
  • League-Toolkit:颠覆级英雄联盟全场景辅助工具,让你的上分效率提升300%
  • 【GitLab】告别“Ensure URL is HTTPS”错误:SSH与HTTPS协议配置全攻略
  • OpenClaw+GLM-4.7-Flash智能家居联动:自然语言控制IoT设备
  • 写给Java新手:AI开发其实没你想的那么难
  • MindSpore mint 模块学习
  • 【Python WASM 部署终极指南】:20年架构师亲授从Pyodide到WASI的生产级落地路径
  • RA8875_TP触摸驱动库:嵌入式电阻屏校准与中断集成指南
  • OpenClaw对话日志分析:Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF优化任务执行策略
  • 紧固件包装机有哪些类型?自动化包装设备全解析_FES 2026上海紧固件展
  • 告别命令行恐惧!用VSCode内置Git功能,5分钟搞定代码上传GitHub私有库
  • 新能源企业数字化转型:从“卖设备“到“卖服务“的服务管理实践