返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP特性&缺陷对比函数&CTF考点
  • 292
分享到

PHP特性&缺陷对比函数&CTF考点

php开发语言 2023-09-25 18:09:59 292人浏览 安东尼
摘要

#详细点: ==与=== md5 intval strpos in_array preg_match str_replace PHP比对规则 == 和 === =:赋值 ==:对比,但是不会对比数据类型 ===:对比,同时对比数据类型 1

#详细点:

=====

md5

intval

strpos

in_array

preg_match

str_replace

PHP比对规则

== 和 ===

=:赋值

==:对比,但是不会对比数据类型

===:对比,同时对比数据类型

1.== 只要赋值变量是1开头,都可以正常访问

2.===

可以看到这两个MD5值都是0开头,而==符号存在的缺陷就是不对比数据类型,相当于对比第一个数

Http://127.0.0.1/ctf.php?name=QNKCDZO&passWord=240610708

当遇到===的PHP验证代码时

2.intval

intval() 函数用于获取变量的整数值。

intval() 函数通过使用指定的进制 base 转换(默认是十进制),返回变量 var 的 integer 数值。 intval() 不能用于 object,否则会产生 E_NOTICE 错误并返回 1。

语法

int intval ( mixed $var [, int $base = 10 ] )

参数说明:

  • $var:要转换成 integer 的数量值。
  • $base:转化所使用的进制。

如果 base 是 0,通过检测 var 的格式来决定使用的进制:

  • 如果字符串包括了 "0x" (或 "0X") 的前缀,使用 16 进制 (hex);否则,
  • 如果字符串以 "0" 开始,使用 8 进制(octal);否则,
  • 将使用 10 进制 (decimal)。
  1. 绕过方式1.0  +1.0 

header("Content-Type:text/html;charset=utf-8");

$flag='dafei ai chi xigua!';

$a='1';

$i=$_GET['n'];

if(intval($i==$a)){

    echo $flag;

}

2.绕过方式 666   0x29a(16进制)

$a='666';

$i=$_GET['n'];

if(intval($i==$a,0)){

    echo $flag;

}

PHP strpos() 函数

查找 "php" 在字符串中第一次出现的位置:

定义和用法

strpos() 函数查找字符串在另一字符串中第一次出现的位置。

注释:strpos() 函数对大小写敏感。

注释:该函数是二进制安全的。

相关函数:

  • stripos() - 查找字符串在另一字符串中第一次出现的位置(不区分大小写)
  • strripos() - 查找字符串在另一字符串中最后一次出现的位置(不区分大小写)
  • strrpos() - 查找字符串在另一字符串中最后一次出现的位置(区分大小写)

语法

strpos(string,find,start)

string

必需。规定要搜索的字符串。

find

必需。规定要查找的字符串。

start

可选。规定在何处开始搜索。

  1. 对于strpos()函数,利用换行绕过(%0a)
0a:换行

PHP in_array() 函数

in_array() 函数搜索数组中是否存在指定的值。

bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )

needle

必需。规定要在数组搜索的值。

haystack

必需。规定要搜索的数组。

strict

可选。如果该参数设置为 TRUE,则 in_array() 函数检查搜索的数据与数组的值的类型是否相同。

设置true属性时

PHP preg_match() 函数

preg_match 函数用于执行一个正则表达式匹配。

语法

int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )

搜索 subject 与 pattern 给定的正则表达式的一个匹配。

参数说明:

  • $pattern: 要搜索的模式,字符串形式。
  • $subject: 输入字符串。
  • $matches: 如果提供了参数matches,它将被填充为搜索结果。 $matches[0]将包含完整模式匹配到的文本, $matches[1] 将包含第一个捕获子组匹配到的文本,以此类推。
  • $flags:flags 可以被设置为以下标记值:
    1. PREG_OFFSET_CAPTURE: 如果传递了这个标记,对于每一个出现的匹配返回时会附加字符串偏移量(相对于目标字符串的)。 注意:这会改变填充到matches参数的数组,使其每个元素成为一个由 第0个元素是匹配到的字符串,第1个元素是该匹配字符串 在目标字符串subject中的偏移量。
  • offset: 通常,搜索从目标字符串的开始位置开始。可选参数 offset 用于 指定从目标字符串的某个未知开始搜索(单位是字节)。
  •  isset()函数用于检测变量是否已设置并且非NULL。如果已经使用unset()释放了一个变量之后,再通过isset()判断将返回FALSE。
  • 如果使用isset()测试一个被设置成NULL的变量,将返回FALSE。同时要注意的是null字符(“ \ 0”)并不相等于PHP的NULL常量。

//模式分隔符后的"i"标记这是一个大小写不敏感的搜索

preg_match('/^php$/im')

^:前边随意

$:结尾随意

/i:不区分大小写

/m:换行匹配

绕过函数方法:利用数组,pre_match处理不了数组数据

PHP str_replace() 函数

实例

把字符串 "Hello world!" 中的字符 "world" 替换成 "Peter":

echostr_replace("world","Peter","Helloworld!");
?>

正常情况

过滤掉select时

过滤方法,只能过滤一次select

CTFshow实战演练

//模式分隔符后的"i"标记这是一个大小写不敏感的搜索

name=QNKCDZO&password=240610708

成功的拿到了flag

来源地址:https://blog.csdn.net/m0_63917373/article/details/126830004

--结束END--

本文标题: PHP特性&缺陷对比函数&CTF考点

本文链接: https://lsjlt.com/news/417638.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • PHP特性&缺陷对比函数&CTF考点
    #详细点: ==与=== md5 intval strpos in_array preg_match str_replace PHP比对规则 == 和 === =:赋值 ==:对比,但是不会对比数据类型 ===:对比,同时对比数据类型 1...
    99+
    2023-09-25
    php 开发语言
  • WEB攻防-PHP特性&缺陷对比函数&CTF考点
    目录 知识点: 详细: //1、== ===缺陷绕过 & == 弱类型对比 ===还会比较类型 //2、MD5函数缺陷绕过 ==弱对比 ===强类型对比 //3、intval缺陷绕过 //4、对于strpos()函数,我们可以利用换行进行...
    99+
    2023-10-01
    php
  • Web攻防--PHP特性&CTF考点
    本文分享的一些PHP代码的缺陷对比函数和CTF的一些考点 知识点: 过滤函数缺陷绕过 CTF考点与代码审计 例如:在PHP 语言中==与===(区别在于==不会对比类型===类型也会对比) 缺陷:两个等号的缺陷就是不唯一 下图是一个简易的代...
    99+
    2023-10-05
    php 开发语言 web安全 网络安全
  • golang函数的优点对比缺点?
    go 函数具有可复用性、封装性、测试性和并发性等优点,同时也有可变性、计算开销和缺乏类型推断等缺点。它在分布式系统、微服务和云计算等领域广泛应用,通过将代码分组为可重用的单元,简化了开发...
    99+
    2024-04-20
    golang 优缺点 封装性
  • CTF中的PHP特性函数有哪些
    本篇内容主要讲解“CTF中的PHP特性函数有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“CTF中的PHP特性函数有哪些”吧!intval()官方是怎样定义的:简单来说就是让输入的数字变成整...
    99+
    2023-07-05
  • golang函数的优点与缺点对比
    go 函数的优点包括:提高代码可重用性、模块化、封装性、可测试性和并发性;缺点包括:代码重复、命名冲突、性能开销、复杂性和调试困难。通过计算矩形面积的示例展示了函数的优点,包括提高代码可...
    99+
    2024-04-19
    golang 优缺点 封装性
  • CTF中的PHP特性函数实例分析
    这篇文章主要介绍“CTF中的PHP特性函数实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“CTF中的PHP特性函数实例分析”文章能帮助大家解决问题。MD5强弱碰撞对于MD5加密大家一定很熟悉,...
    99+
    2023-07-05
  • CTF中的PHP特性函数怎么使用
    这篇文章主要介绍了CTF中的PHP特性函数怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇CTF中的PHP特性函数怎么使用文章都会有所收获,下面我们一起来看看吧。parse_strparse_str()这...
    99+
    2023-07-05
  • Golang函数库的优缺点对比
    golang 标准库的函数库各有优缺点,了解差异很重要。fmt 函数库提供格式化输出,但控制有限;log 函数库记录日志,但无自定义级别;regexp 函数库处理正则表达式,但性能受限;...
    99+
    2024-04-18
    golang 函数库 格式化输出 标准库
  • CTF中的PHP特性函数解析之上篇
    目录前言MD5强弱碰撞弱类型比较强类型比较强碰撞preg_match()结语前言 对于PHP大家一定不陌生,但你知道PHP在CTF中是如何考察的吗,本文给大家带来的是通过PHP特性...
    99+
    2023-02-21
    CTF PHP特性函数 CTF PHP
  • C++ 函数参数传递方法的优缺点对比
    c++++函数参数传递分为值传递和引用传递,值传递不会修改函数中变量,优点是低内存消耗,缺点是针对大数据结构复制开销大。引用传递优点是避免了大数据结构的复制开销,缺点是可能修改调用函数中...
    99+
    2024-04-13
    c++ 函数参数 引用传递 值传递
  • C++ 函数与宏的区别和优缺点对比
    函数是运行时执行的代码块,可返回结果;宏是预处理时展开的常量或代码片段,不可返回结果。函数易读、可重用、代码可读性高,但效率低;宏编译开销小、性能优,但代码可读性差、难以调试。 C++...
    99+
    2024-04-11
    函数 c++ 作用域 代码可读性
  • golang函数管道通信模式的优缺点对比
    管道是 go 中的通信机制,允许并发 goroutine 安全地共享数据。它具有解耦并发性、安全数据共享、高效数据传输和可缓存性等优点,但也有有限缓冲、潜在死锁、性能开销、不易调试和数据...
    99+
    2024-05-03
    golang 管道通信
  • JS中构造函数的基本特性与优缺点
    构造函数:如用函数用来初始化(使用new运算符)一个新建的对象,我们称之为构造函数(constructor) function Person(){ this.name = "...
    99+
    2024-04-02
  • PHP PDO与其他数据库扩展对比:优缺点分析
    PHP提供了多种数据库扩展,如MySQLi、PostgreSQL、SQLite等,这些扩展都具有不同的特点和优缺点。本文将重点对比PDO和其他数据库扩展,分析PDO的优势和劣势,并通过演示代码展示PDO的使用方法。 PDO的优势主要体现...
    99+
    2024-02-13
    PHP PDO 数据库扩展 优缺点 使用方法
  • PHP 函数新特性与以往版本相比有哪些突破?
    php 函数的新特性包括:类型声明:用于声明参数和返回值类型,提高代码可读性和类型安全。属性:可以存储与函数相关的数据,避免使用全局变量,使代码更加模块化。初始化器:允许在函数定义时设置...
    99+
    2024-05-01
    php 新特性 代码可读性
  • PHP 函数新特性与以往版本相比有哪些突破?
    php 函数的新特性包括:类型声明:用于声明参数和返回值类型,提高代码可读性和类型安全。属性:可以存储与函数相关的数据,避免使用全局变量,使代码更加模块化。初始化器:允许在函数定义时设置...
    99+
    2024-05-01
    php 新特性 代码可读性
  • 使用 PHP 内置函数和自定义函数去重数组的性能对比
    array_unique() 是去重数组性能最好的内置函数。哈希表法自定义函数性能最优,哈希值用作键,值为空。循环法实现简单但效率低,建议使用内置或自定义函数进行去重。array_uni...
    99+
    2024-04-26
    php 数组
  • PHP 函数新特性对现有代码的影响是什么?
    php 7.0 中引入的函数新特性对现有代码的影响:返回类型声明确保函数返回预期类型,提高安全性。标量类型提示帮助检测类型不匹配错误,減少错误。返回类型声明避免函数体内重复类型声明,減少...
    99+
    2024-05-04
    函数 php
  • PHP 函数新特性对开发团队的学习成本如何?
    php 函数新特性带来开发效率和代码质量提升的可能性,但学习新语法和用法需要投入时间和精力,对开发团队的技能和现有代码库造成影响。成本评估应权衡新特性的好处,包括提高效率、提升代码质量和...
    99+
    2024-05-01
    函数 php
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作