攻防世界_simple_php

同类型题(更难版->)攻防世界_Web(easyphp)(php代码审计/json格式/php弱类型匹配)

php代码审计

  • show_source(__FILE__):show_source() 函数用于显示指定文件的源代码,并进行语法高亮显示。__FILE__ 是魔术常量,表示当前正在执行的 PHP 文件的完整路径和文件名。这行代码会显示当前文件的源代码。
  • include("config.php"):include 语句用于将指定的文件(这里是 config.php)包含到当前脚本中。
1. 获取 GET 参数
复制代码
$a=@$_GET['a'];
$b=@$_GET['b'];
  • @ 是错误抑制符,用于抑制可能出现的错误信息。
  • $_GET 是一个超全局变量,用于获取通过 HTTP GET 方法传递的参数。这里将用户通过 GET 请求传递的 a 和 b 参数的值分别赋给变量 $a 和 $b。
2. 条件判断输出 $flag1
复制代码
if($a==0 and $a){
    echo $flag1;
}
  • $a==0:使用松散比较运算符 == 比较 $a 是否等于 0。在松散比较中,一些非数字类型的值(如字符串 "0")也会被视为等于 0。
  • $a:在布尔上下文中,PHP 会将变量 $a 转换为布尔值进行判断。除了 false、0、0.0、""、'0'、array()、null 等被视为 false 的值外,其他值都被视为 true。
  • 要使 $a==0 and $a 这个条件成立,$a 需要满足在松散比较下等于 0,但本身又被视为布尔值 true。
3. 检查 $b 是否为数字
复制代码
if(is_numeric($b)){
    exit();
}
  • is_numeric() 用于判断一个变量是否为数字或者可以转换为数字的字符串。如果 $b 是数字或可转换为数字的字符串,脚本会调用 exit() 函数终止执行。
4. 条件判断输出 $flag2
复制代码
if($b>1234){
    echo $flag2;
}
  • 如果 $b 不是数字(通过上一个条件判断),但在比较时能满足大于 1234 的条件,脚本会输出 $flag2。在 PHP 中,当比较一个非数字字符串和数字时,PHP 会尝试将非数字字符串转换为数字进行比较。

解题步骤

根据条件输入参数a,b获取 $flag1,获取 $flag2

a使 $a==0 and $a 这个条件成立

b非数字,比1234大

绕过方法

  • 获取 $flag1 :可以将 a 参数设置为字符串 "0e123"。在 PHP 中,以 0e 开头的字符串会被当作科学计数法表示的数字进行处理,"0e123" 会被解释为 0,满足 $a==0;同时,字符串 "0e123" 本身在布尔上下文中被视为 true,满足 $a 的条件。
  • 获取 $flag2 :可以将 b 参数设置为字符串 "1235abc"。is_numeric("1235abc") 会返回 false,因为它不是一个纯数字字符串;而在比较 "1235abc" 和 1234 时,PHP 会将 "1235abc" 转换为数字 1235 进行比较,满足 $b>1234 的条件。
相关推荐
IM架构师5 小时前
# 一次老旧PHPCMS网站入侵排查:从SQL注入到PHP后门,以及IP白名单止血
sql·tcp/ip·php
码途行者6 小时前
处理超时未支付订单:两套轻量化方案,附 PHP 极简实现
开发语言·redis·php
vx_Biye_Design6 小时前
PHP中医养生馆预约系统60841-计算机课程设计、毕业设计
vue.js·spring boot·后端·mysql·php·课程设计·express
.Bryce.7 小时前
你了解 Blackboard(黑板系统)吗?听说过基于黑板系统实现的智能体吗?
java·网络·gpt·php·agent·codex·黑板系统
yu_zhidun16 小时前
企业电脑监控软件怎么选:别只看功能清单,先看这 6 个底层能力
开发语言·电脑·php·域智盾系统
李纲明17 小时前
WordPress 白屏排查手册:关插件、换主题、开调试、查 PHP(附停手信号)
开发语言·php·wordpress·故障排查·白屏·插件冲突
天远API20 小时前
零信任架构实战:基于天远公安二要素政务版构建自动化不动产交易与契税核算实名核实网关
人工智能·架构·自动化·php
WeiXin_DZbishe21 小时前
基于springboot装修风格选择系统的设计与开发-计算机毕设【课程设计】77964
java·vue.js·spring boot·后端·python·php·课程设计
anew___1 天前
《从零手写操作系统 (49):虚拟内存进阶——Demand Paging、Swap与缺页异常处理》
linux·服务器·php
misty youth1 天前
Navicat与PHPstudy小皮
mysql·adb·php·navicat