[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弱语言特性。

我是秋说,我们下次见。

目录
相关文章
|
缓存 网络协议 安全
【网络攻防战】DNS协议的致命弱点:如何利用它们发动悄无声息的网络攻击?
【8月更文挑战第26天】DNS(域名系统)是互联网的关键组件,用于将域名转换为IP地址。然而,DNS协议存在安全漏洞,包括缺乏身份验证机制、缓存中毒风险及放大攻击的可能性。通过具体案例,如DNS缓存中毒和DNS放大攻击,攻击者能够误导用户访问恶意站点或对目标服务器实施DDoS攻击。为了防范这些威胁,可以采用DNSSEC实现数字签名验证、利用加密的DNS服务(如DoH或DoT)、限制DNS服务器响应以及及时更新DNS软件等措施。理解并应对DNS的安全挑战对于确保网络环境的安全至关重要。
840 2
|
安全 网络安全 PHP
深入理解PHP的命名空间与自动加载机制网络安全与信息安全:防护之道与攻防之术
【5月更文挑战第29天】在PHP的开发实践中,命名空间和自动加载机制是两个重要的概念,它们共同构成了现代PHP代码组织的基础。本文将详细解释命名空间在PHP中的应用,探讨其解决代码冲突和提高代码复用性的能力,同时深入研究自动加载机制的原理及其在项目中的实际运用,帮助开发者构建更加高效、易于维护的PHP应用。
|
安全 网络安全 数据安全/隐私保护
网络安全与信息安全:防护之道与攻防之策
【5月更文挑战第29天】在数字化时代,网络安全与信息安全已成为维护个人隐私、企业资产和国家安全的重要屏障。本文深入探讨了网络安全漏洞的成因、加密技术的应用以及提升安全意识的必要性,旨在为读者提供一个全面的安全防护知识框架。通过对当前网络威胁的分析,我们揭示了安全漏洞的本质及其对信息系统的潜在影响,并介绍了最新的加密技术如何作为防御工具来保护数据传输的安全。此外,文章还强调了培养全民网络安全意识的重要性,提出了一系列实用的安全建议和最佳实践。
|
SQL 安全 网络安全
网络安全与信息安全:防护之道与攻防之策
【5月更文挑战第13天】 在数字化时代,网络安全和信息安全已成为维护信息空间稳定的关键。本文深入探讨了网络安全漏洞的成因、加密技术的应用以及提升安全意识的重要性。通过对现有安全威胁的分析,提出了一系列防御策略,并强调了持续教育和技术创新在构建坚固防线中的作用。
|
网络协议 安全 物联网
网络安全涨知识:基础网络攻防之DDoS攻击
网络安全涨知识:基础网络攻防之DDoS攻击
1284 0
|
安全 网络安全 数据安全/隐私保护
网络攻防演练需要注意哪些
【8月更文挑战第14天】
845 1
|
SQL 安全 网络安全
网络安全攻防实战:黑客与白帽子的较量
【6月更文挑战第29天】网络安全战场,黑客与白帽子的博弈日益激烈。黑客利用漏洞扫描、DDoS、SQL注入等手段发起攻击,而白帽子则通过防火墙、入侵检测、数据加密等技术防守。双方在技术与智慧的较量中,未来将更多融入AI、区块链等先进技术,提升攻防效率与安全性。面对网络威胁,提升技能与意识至关重要。
|
SQL 安全 算法
网络安全与信息安全:防护之道与攻防之术
【5月更文挑战第29天】 在数字化时代,数据成为了新的石油。然而,随之而来的网络威胁却如同无形的盗贼,时刻觊觎着这些价值连城的“黑金”。本文将深入探讨网络安全漏洞的本质、加密技术的进展,以及提升安全意识的重要性。我们将透过技术的视角,分析如何构建一道坚固的数字防线,并讨论攻防双方的策略变化。通过案例剖析和最新研究成果,本文旨在为读者提供一份全面的网络安全与信息安全知识图谱。
|
安全 算法 网络安全
深入理解PHP的命名空间网络安全与信息安全:防护之道
【5月更文挑战第28天】 在现代PHP开发中,命名空间是一个不可或缺的概念。它不仅解决了代码库中的类名冲突问题,还为自动加载、依赖管理以及代码组织提供了强有力的支持。通过本文,我们将详细探讨PHP命名空间的工作原理、使用方法以及在实际项目中的应用,帮助开发者更好地掌握和运用这一技术。 【5月更文挑战第28天】随着信息技术的飞速发展,网络已经深度融入人类生活的方方面面。然而,网络安全问题也随之凸显,成为亟待解决的全球性难题。本文将深入探讨网络安全中的漏洞问题、加密技术以及安全意识等方面的内容,以期为读者提供一份全面的网络安全知识分享。
|
安全 算法 网络安全
网络安全与信息安全:攻防之间的智慧博弈
【5月更文挑战第17天】在数字化时代,网络安全与信息安全已成为维系信息社会正常运行的关键。本文将深入探讨网络安全漏洞的成因、加密技术的进展以及提升安全意识的重要性。通过对这些领域的分析,旨在为读者提供一幅全面的网络安全与信息安全图景,并强调在这场看不见硝烟的战争中,技术革新和人类警觉性的不断提升是保障我们数字生活安全的双翼。