[CTF/网络安全] 攻防世界 simple_php 解题详析

简介: PHP弱语言特性姿势参数a限制绕过参数b限制绕过

[CTF/网络安全] 攻防世界 simple_php 解题详析


代码解读


PHP弱语言特性

姿势

参数a限制绕过

参数b限制绕过

总结

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

image.png


代码解读

$a=@$_GET['a']; 从HTTP GET请求参数中获取一个名为a的变量,并将其赋值给变量a。@符号用于禁止错误输出,如果不存在参数a则会将变量a设置为NULL。


$b=@$_GET['b']; 从HTTP GET请求参数中获取一个名为b的变量,并将其赋值给变量b。


if($a==0 and $a){ echo $flag1; } 如果变量a等于0并且a存在,则输出变量flag1的值。但是由于a不可能同时为0和存在,因此这个if语句不会执行。


if(is_numeric($b)){ exit(); } 如果变量b是一个数字,则终止程序的执行。


if($b>1234){ echo $flag2; } 如果变量b的值大于1234,则输出变量flag2的值。


PHP弱语言特性

在 PHP 中,有两种比较运算符用于比较两个值是否相等,它们分别是 == 和 ===,它们的区别如下:


== 比较运算符是一个松散比较,它只比较变量的值,而不考虑变量的数据类型。当比较两个变量时,如果它们的值相等,则返回 true。

例如:0 == "0" 返回 true。


=== 恒等比较运算符是一个严格比较,它不仅比较变量的值,还比较变量的数据类型和内存地址。当使用恒等比较运算符比较两个变量时,如果它们的值和数据类型都相等,则返回 true。

例如:0 === "0" 返回 false。


因为 == 操作符仅比较值,所以当比较字符串时,PHP 会尝试将字符串转换为数字进行比较

具体来说,PHP会依次执行以下步骤:


如果其中一个操作数是布尔值(true或false),则将其转换为1(true)或0(false)。


如果其中一个操作数是null,将其转换为整数0。


如果其中一个操作数是数组,将其转换为字符串Array。


如果操作数中的任何一个是对象,则将其转换为字符串Object。


对于两个操作数都是字符串的情况,PHP会将两个字符串中的非数字字符删除,然后将剩余的数字字符串转换为相应的数字进行比较。


如果以上都不适用,则将字符串转换为数字进行比较。


例如,当比较字符串"0123"和整数123时,返回 true;当比较字符串"12xxx"和整数12时,返回 true,因为 PHP 会将字符串转换为数字后进行比较。


姿势

参数a限制绕过

由于a等于0并且a存在,所以可构造开头数值为0的字符串a

GET:a=0qiu


参数b限制绕过

由于b不能为数字且b数值大于1234,因此可构造开头数值大于1234的字符串b

GET:b=1235qiu


回显如下:

image.png



总结

该题结合GET传参姿势考察PHP代码的解读及PHP弱语言特性。

我是秋说,我们下次见。

目录
相关文章
|
安全 中间件 网络安全
深入浅出PHP框架之Laravel的优雅云计算与网络安全:探索云服务、网络安全和信息安全的技术领域
【8月更文挑战第29天】在编程的世界里,PHP以其灵活性和易用性广受欢迎。本文将深入探讨PHP的一个流行框架——Laravel,揭示它如何以简洁、高雅的解决方案满足复杂的开发需求。我们将一起走进Laravel的世界,探索其背后的哲学,以及它如何让代码变得更加动人和富有韵律。
|
安全 网络安全 PHP
云计算与网络安全:技术融合下的新挑战PHP 在现代Web开发中的角色和挑战
【8月更文挑战第23天】随着云计算技术的飞速发展,企业和个人越来越依赖云服务来处理和存储数据。然而,这种便利性也带来了前所未有的网络安全风险。本文将探讨云计算环境中的网络安全挑战,分析信息安全的关键问题,并提出相应的防护措施。我们将深入讨论如何通过策略和技术的结合来增强云安全,确保数据的安全和隐私保护。
|
存储 PHP 数据安全/隐私保护
攻防世界 Web_php_unserialize
攻防世界 Web_php_unserialize
646 0
|
安全 网络安全 PHP
深入理解PHP的命名空间与自动加载机制网络安全与信息安全:防护之道与攻防之术
【5月更文挑战第29天】在PHP的开发实践中,命名空间和自动加载机制是两个重要的概念,它们共同构成了现代PHP代码组织的基础。本文将详细解释命名空间在PHP中的应用,探讨其解决代码冲突和提高代码复用性的能力,同时深入研究自动加载机制的原理及其在项目中的实际运用,帮助开发者构建更加高效、易于维护的PHP应用。
|
安全 算法 网络安全
深入理解PHP的命名空间网络安全与信息安全:防护之道
【5月更文挑战第28天】 在现代PHP开发中,命名空间是一个不可或缺的概念。它不仅解决了代码库中的类名冲突问题,还为自动加载、依赖管理以及代码组织提供了强有力的支持。通过本文,我们将详细探讨PHP命名空间的工作原理、使用方法以及在实际项目中的应用,帮助开发者更好地掌握和运用这一技术。 【5月更文挑战第28天】随着信息技术的飞速发展,网络已经深度融入人类生活的方方面面。然而,网络安全问题也随之凸显,成为亟待解决的全球性难题。本文将深入探讨网络安全中的漏洞问题、加密技术以及安全意识等方面的内容,以期为读者提供一份全面的网络安全知识分享。
|
存储 安全 网络安全
网络安全与信息安全:防御前线的守护者深入理解PHP中的命名空间
【5月更文挑战第27天】在数字化时代,数据成为了新的货币,而网络空间则转变为了一个充满风险和机遇并存的新领域。本文深入探讨了网络安全漏洞的概念、加密技术的进展以及提升个人和企业安全意识的重要性。通过分析当前网络威胁的特点,文章提供了一系列的策略和建议,旨在强化读者对网络和信息安全的认识,并强调构建一个安全的网络环境需要技术手段与用户教育双管齐下。
攻防世界---Web_php_include
攻防世界---Web_php_include
|
数据安全/隐私保护
攻防世界13-simple_php
攻防世界13-simple_php
|
安全 Linux PHP
【攻防世界】php_rce (ThinkPHP5)
【攻防世界】php_rce (ThinkPHP5)