首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

看代码学安全(9 )str_replace函数过滤不当

例如攻击者使用payload:....// 或者 ..././ ,在经过程序 str_replace 函数处理后,都会变成 ../ ,所以上图程序中 str_replace 函数过滤是有问题。...我们来看一下PHP手册对 str_replace 函数具体定义str_replace :(PHP 4, PHP 5, PHP 7) 功能 :子字符串替换 定义 : mixed str_replace...关于 strstr 函数定义如下: strstr :(PHP 4, PHP 5, PHP 7) 功能 :查找字符串首次出现 定义 : string strstr ( string $haystack...上图程序最后调用了 load 类 _load_class 方法,我们跟进方法,详细代码如下: ?...可以看到上图代码第16行处实例化了一个 old_thumb 类对象,然后在第25行处调用了 old_thumb 类 doshow 方法, doshow 方法中 $dir 变量就是用户可以控制

2.3K30
您找到你想要的搜索结果了吗?
是的
没有找到

PHP 中最常用 100 个函数

100 个 PHP 函数,总结一下: 这 100 个函数近期都没有被废弃计划,所以可以放心使用,并加强学习。...最常用字符串函数然后是数组函数和文件函数,有相当多调用是为了知道值类型。 md5 是最常用加密函数,其次是 Sha1 (#147),print_r 出现在 1/3 项目的代码中。...读取文件函数比写入文件函数应用多,另外通常使用 file_get_contents 读取文件,使用 fwrite 写入文件。...array, echo, print, empty, isset 和其他语言结构,因为不能算作 PHP 函数,所以没有纳入此排名,但是它们使用度肯定是非常高。...数据库函数没有在这里排名,因为经常使用是类,但数据库功能是使用度很高

25250

PHP常见字符串面试题总结

实现字符串翻转 // 系统函数 strrev(); // 自定义函数 $str = "123qwer"; $len = strlen($str); $newStr = ''; for($i=$len;...SERVER['REMOTE_ADDR'];//客户端IP echo $_SERVER['SERVER_ADDR'];//服务器端IP echo $_SERVER['PHP_SELF'];//结果:"/...// ucfirst($str);将字符串第一个字母转换为大写 // lcfirst($str);将字符串第一个字母转换为小写 // ucwords($str, flag);将字符按照固定格式分割为一个单词...)['dirname']); // 文件名 echo((pathinfo($fileInfo))['basename']); echo ""; // 方式二:自定义函数操作 function.../c/d echo abspath($a, $b); 由于此类问文章首发地址为微信公众号,后期会不断更新,微信公众号不便于更新,可以点击左下角阅读原文按钮,即可查看最新版本。

1.7K20

详解php反序列化

1 前言 最近也是在复习之前学过内容,感觉对PHP反序列化理解更加深了,所以在此总结一下 2 serialize()函数 “所有php里面的值都可以使用函数serialize()来返回一个包含字节流字符串来表示...这个是结果: ? 注意:在解序列化一个对象前,这个对象类必须在解序列化之前定义。...因为PHP允许对象序列化,攻击者就可以提交特定序列化字符串给一个具有漏洞unserialize函数,最终导致一个在应用范围内任意PHP对象注入。...对象漏洞出现得满足两个前提: 一、unserialize参数可控。 二、 代码里有定义一个含有魔术方法类,并且方法里出现一些使用类成员变量作为参数存在安全问题函数。...serialize($obj); #使用str_replace() 函数进行替换,来绕过正则表达式检查 $a = str_replace('O:4:','O:+4:',$a); #使用str_replace

69130

PHP字符串

PHP字符串 字符串格式化 字符串截断: trim(): 删除字符串首尾位置(回车、换行、制表符)字符,并返回结果字符串 同时,trim()参数也可以设置自定义特殊字符过滤列表 rtrim(): 删除字符串首部位置开始特殊字符...HTML实体输出(可以将字符串中特殊含义字符转译为HTML实体) str_replace():正则过滤输出 nl2br():HTML格式化 nl2br()函数字符串作为输入操作,用HTML中< br...format [, mixed args...]); // 返回结果字符串 在字符格式化输出中,使用 % 字符格式输出控制符对字符进行规范化 字符串大小写 strtoupper():字符串大写 strtolower...,strtok()函数每次根据分隔符只会读取出一个子字符串; substr(): 返回一个字符串中给定起点和终点返回而组成字符串结果 string substr(string string , int...false 字符串位置: strpos():返回匹配字符位置 strpos()函数参数和strstr()相似,strpos()第三个参数可以指定开始查找位置 字符串替换: str_replace

1.9K20

PHP命名空间与自动加载机制基础介绍

当需要使用类没有被引入时,这个函数会在PHP报错前被触发,未定义类名会被当作参数传入。至于函数具体逻辑,这需要用户自己去实现。...首先创建一个 autoload.php 来做一个简单测试: // 类未定义时,系统自动调用 function __autoload($class) { /* 具体处理逻辑 */ echo $class...if (class_exists($class, false)) { return new $class(); } // 查看 autoload 函数是否被用户定义 if (function_exists...这里我们使用 spl_autoload_register() 函数来实现,这需要你 PHP 版本号大于 5.12。...一旦调用 spl_autoload_register() 函数,当调用定义类时,系统就会按顺序调用注册到 spl_autoload_register() 函数所有函数,而不是自动调用 __autoload

1.7K30

php学习笔记之字符串常见操作总结

本文实例讲述了php字符串常见操作。分享给大家供大家参考,具体如下: 字符串定义 可以用单引号或双引号来定义字符串 <?php $str = "hello"; $str = 'hello'; ?...heredoc和nowdoc定义大段字符串 区别:和单引号与双引号定义字符串区别相同 <?php //heredoc使用 $str3 = <<<MARK hello world!...单引号要快于双引号 字符串常用函数 1)计算字符串长度 strlen():按照字符串占用字节数来计算长度 mb_strlen():按照编码来计算字符串长度 <?...3)替换字符串函数 str_replace():区分大小写替换字符串内容 str_ireplace():不分区大小写替换字符串内容 strtr():成批地进行替换(可以使用数组某种对应关系...10)字符串转换函数 strtolower():全部转换为小写 strtoupper():全部转换为大写 ucfirst():将字符串首字母转换为大写 ucwords():将字符串每个单词首字母大写

93820

php常用函数总结有哪些

() 随机数 更好随机数 跟上面的一样 round() 四舍五入示例:常用有浮点数操作 round(1.1111111, 2) 结果为 1.11 取两位小数二、字符串函数explode() 拆分字符串示例...:explode(' ', 'Hello World') 结果为: ['Hello', 'World'] str_replace() 字符串替换示例:str_replace( 'H', 'W', "Hello...", "J") 结果:false md5() 简单加密 不可逆(就是不能通过加密值推算出加密前值)示例:md5(123); 结果为: 自己测去 vat_dump() 打印数据 一般用于断点使用 strlens...() 计算字符串长度示例:strlens('123123') 结果:6 trim() 去除字符串两侧空白字符或其他预定义字符。...ucfirst() 首字母大写示例:ucfirst("test string") 结果:Test string ucwords() 字符串每个单词首字母都大写示例:ucwords("test string

21050

str_replace导致注入问题总结

</body </html 发现是引用了addslashes函数: ? 一个单引号或者双引号直接被转义,字符串注入到这里基本上gg了。没戏了。   ...addslashes问题:     addslashes会把%00转换成\0     addslashes会把单引号(‘)转换成\’     因为使用str_replace函数,会替换那么输入%00...替换后内容赋值给了$order_sn   往下看发现调用了check_money函数,跟踪下这个函数查看内部实现:   uploads/lib/table/pay.php ?   ...先是赋值然后调用了getrow函数,跟进去看看:   uploads/lib/inc/table.php ?   ...回到刚开始alipay.php 第79行 ?   正则匹配下\’     然后再次访问: 直接跳转了不再停留了。 ?

1.4K30

PHP常用函数 字符串处理函数

这意味着 PHP 只能支持 256 字符集,因此不支持 Unicode 。String最大可以达到2G。...php.net String 字符串 经常使用 # 字符串输出 echo(); // 输出一个或多个字符串 print(); // 输出一个字符串 printf(); // 输出格式化字符串...;  strrev();     //将字符串颠倒函数;  strtolower(); //将字符串大写转换成小写,原来小写不变;  strtoupper(); //将字符串小写转换成大写,原来大写不变...;  ucfirst();   //将字符串中第一个字符转成大写;  ucwords();   //将字符串中每一个单词首字母转成大写;  # 统计字符串中一个子字符串出现次数 substr_count...全部函数 函数名 描述 实例 trim() 删除字符串两端空格或其他预定义字符 $str = ""\r\nHello World!

1.6K40

BUUCTF AreUSerialz 1 (两种解法 超详细!)

只有当前类成员与继承该类类才能访问 绕过方式:%00%00成员名 PHP类 **class **创建PHP关键字 function 用于用户声明自定义函数 $this->...表示在类本身内部使用本类属性或者方法 isset 用来检测参数是否存在并且是否具有值 PHP常见函数 **include() ** 包含函数 ** ** highlight_file()...,指要从中获得ASCII值字符串 PHP魔法函数 **__construct() ** 实例化对象时被调用 __destruct() 当删除一个对象或对象操作终止时被调用 PHP代码审计...将str参数放入到自定义函数is_valid里面进行反序列化操作 第一种解法 突破ord函数限制 序列化代码 <?...$mao =str_replace('%00',"\\00",$bai); //str_replace函数查找变量bai里面的数值%00并将其替换为\\00 $mao =str_replace

37310

BUUCTF AreUSerialz 1 (两种解法 超详细!)

只有当前类成员与继承该类类才能访问 绕过方式:%00%00成员名 PHP类 **class **创建PHP关键字 function 用于用户声明自定义函数 $this->...表示在类本身内部使用本类属性或者方法 isset 用来检测参数是否存在并且是否具有值 PHP常见函数 **include() ** 包含函数 ** ** highlight_file()...,指要从中获得ASCII值字符串 PHP魔法函数 **__construct() ** 实例化对象时被调用 __destruct() 当删除一个对象或对象操作终止时被调用 PHP代码审计...将str参数放入到自定义函数is_valid里面进行反序列化操作 第一种解法 突破ord函数限制 序列化代码 <?...$mao =str_replace('%00',"\\00",$bai); //str_replace函数查找变量bai里面的数值%00并将其替换为\\00 $mao =str_replace

23610

字符串相关知识集锦

常用函数 1.数据库安全方面 addslashes — 使用反斜线引用字符串,返回字符串字符串为了数据库查询语句等需要在某些字符前加上了反斜线。...,第四个是整数部分每隔三位间分割符号 print — 输出字符串,print 实际上不是一个函数(它是一个语言结构),因此你可以不必使用圆括号来括起它参数列表 printf — 输出格式化字符串...str_replace — 子字符串替换,该函数返回替换后数组或者字符串。...第一个参数是要被替换值,第二个是替换结果值,第三个是要进行匹配字符串,第四个是替换次数 strip_tags — 从字符串中去除 HTML 和 PHP 标记 stripcslashes() 函数删除由...— 替换字符串子串 ucfirst — 将字符串首字母转换为大写 ucwords — 将字符串中每个单词首字母转换为大写

89070

你应该这个姿势学习PHP(1)

1、addslashes   addslasehes($string) 对字符串进行编译转义   应用场景:能防止sql注入(当然并不完全是可以,我们可以使用pdo进行预处理然后方式sql注入...,然后后端返回是一个数组,那么就可以使用implode(',',$arr)   5、explode,str_split   将字符串拆分成一个数组   应用场景:比如前端传给后端一个1,simengphp...你想或者simengphp这个字符串,那么你就可以使用   explode(',',$arr)[1]   6、substr,strstr,strrchr   1)substr字符串截取函数   应用场景...($str,'.'); //输出.php 这个是一个经典面试题   7、str_replace,str_ireplace, substr_replace   1)str_replace(search,...$str,‘x’,10) 填充指定字符将字符串到指定长度   应用场景:比如我们有一个需求是将一些字段统一为一样长度字符串然后传输到后台处理,可以使用这个   13、sha1,md5,hex2bin

1.2K170

你应该这个姿势学习PHP(1)

1、addslashes addslasehes($string) 对字符串进行编译转义 应用场景:能防止sql注入(当然并不完全是可以,我们可以使用pdo进行预处理然后方式sql注入,安全不能只靠一种方式防止事情发生...,然后后端返回是一个数组,那么就可以使用implode(',',$arr) 5、explode,str_split 将字符串拆分成一个数组 应用场景:比如前端传给后端一个1,simengphp 你想或者...simengphp这个字符串,那么你就可以使用 explode(',',$arr)[1] 6、substr,strstr,strrchr 1)substr字符串截取函数 应用场景:我要获取字符串前几位...7、str_replace,str_ireplace, substr_replace 1)str_replace(search,res,$str) 替换某个为你所想要 应用场景:替换到用户传过来单词某个值......代替,那么我们可以使用这个重复,然后展示 2)str_pad($str,‘x’,10) 填充指定字符将字符串到指定长度 应用场景:比如我们有一个需求是将一些字段统一为一样长度字符串然后传输到后台处理

918100

PHP部分字符串函数汇总

我们大家知道无论哪种语言,字符串操作都是一个重要基础,往往是简单而重要。PHP给我们提供了大量字符串操作函数,功能强大,使用也比较简单,这里为大家总结九类字符串函数。 1....替换字符串PHP字符串函数 str_replace(search,replace,$str): 从$str中查找search用replace来替换 str_irreplace(search,replace...分割成数组PHP字符串函数 str_split($str,len): 把$str按len长度进行分割返回数组 split(search,$str[,int]): 把$str按search...字符大小写转换PHP字符串函数 strtolower($str): 字符串转换为小写 strtoupper($str): 字符串转换为大写 ucfirst($str): 将函数第一个字符转换为大写...ucwords($str): 将每个单词首字母转换为大写 附: PHP字符串函数库,收集了51个PHP处理字符串函数

1.2K60

详解php反序列化

1  前言 最近也是在复习之前学过内容,感觉对PHP反序列化理解更加深了,所以在此一下 2  serialize()函数      “所有php里面的值都可以使用函数serialize()来返回一个包含字节流字符串来表示...> 这个是结果: 注意:在解序列化一个对象前,这个对象类必须在解序列化之前定义。...否则会报错 4  PHP反序列化漏洞 在学习漏洞前,先来了解一下PHP魔法函数,对接下来学习会很有帮助 PHP 将所有以 __(两个下划线)开头类方法保留为魔术方法 __construct 当一个对象创建时被调用...因为PHP允许对象序列化,攻击者就可以提交特定序列化字符串给一个具有漏洞unserialize函数,最终导致一个在应用范围内任意PHP对象注入。...二、 代码里有定义一个含有魔术方法类,并且方法里出现一些使用类成员变量作为参数存在安全问题函数。 下面来举个例子: <?

72400
领券