12,攻防世界simple_php

simple_php

题目来源:Cyberpeace-n3k0

题目描述:

小宁听说php是最好的语言,于是她简单学习之后写了几行php代码。

进入靶场

这段PHP代码是一个简单的web应用示例,让我们逐步分析这段代码:

show_source(FILE);:这行代码会显示当前文件的源代码。这通常用于调试目的,但在生产环境中暴露源代码可能会泄露敏感信息。

include("config.php");:这行代码包含了一个名为config.php的文件

a=@_GET['a']; 和 b=@_GET['b'];:这两行代码从URL的查询字符串中获取a和b参数的值,并使用@运算符抑制错误信息的显示。

第一个if语句:if(a==0 and a){...} 检查$a是否既等于0又在某种逻辑上被视为真(truthy)。

第二个if语句:if(is_numeric(b)){...} 检查b是否为数字。如果是,脚本将执行exit();并终止。这意味着,为了使代码继续执行到打印flag2的部分,b必须是非数字的值。

第三个if语句:if(b\>1234){...} 检查b是否大于1234。如果是,将打印flag2。由于前面的is_numeric(b)检查,这个条件只有在$b是非数字但能以某种方式被PHP解释为大于1234的值时才会为真。这通常涉及到字符串到数字的强制转换,例如,字符串"12345abc"会被转换为数字12345,因为它以数字开头。

分析结束

既然知道了一个文件名,就去试着访问一下,发现访问不了

弱类型语言:弱类型语言在进行变量比较时,通常不会严格地要求变量的类型必须一致。这种比较方式允许不同类型的变量之间进行转换和比较,从而提高了编程的灵活性和便利性。

构造的payload中a=a或a==0都可

相关推荐
艾莉丝努力练剑26 分钟前
【LeetCode&数据结构】单链表的应用——反转链表问题、链表的中间节点问题详解
c语言·开发语言·数据结构·学习·算法·leetcode·链表
倔强青铜34 小时前
苦练Python第18天:Python异常处理锦囊
开发语言·python
u_topian5 小时前
【个人笔记】Qt使用的一些易错问题
开发语言·笔记·qt
珊瑚里的鱼5 小时前
LeetCode 692题解 | 前K个高频单词
开发语言·c++·算法·leetcode·职场和发展·学习方法
AI+程序员在路上5 小时前
QTextCodec的功能及其在Qt5及Qt6中的演变
开发语言·c++·qt
xingshanchang6 小时前
Matlab的命令行窗口内容的记录-利用diary记录日志/保存命令窗口输出
开发语言·matlab
Risehuxyc6 小时前
C++卸载了会影响电脑正常使用吗?解析C++运行库的作用与卸载后果
开发语言·c++
AI视觉网奇6 小时前
git 访问 github
运维·开发语言·docker
不知道叫什么呀6 小时前
【C】vector和array的区别
java·c语言·开发语言·aigc
liulilittle6 小时前
.NET ExpandoObject 技术原理解析
开发语言·网络·windows·c#·.net·net·动态编程