Web安全 _ 无字母数字Webshell 总结.pdf
【Web安全】无字母数字Webshell总结 在Web安全领域,Webshell是一种常见的攻击手段,用于在目标服务器上获得远程控制。无字母数字Webshell是指避开常规字母和数字字符限制的Webshell构造方法。通常,服务器会通过检测输入是否包含字母和数字来防止恶意Webshell的注入。然而,这种防护策略可以通过巧妙的编码转换和利用其他非字母数字字符来绕过。 要理解无字母数字Webshell的核心思想。如描述中提到的示例代码,它限制了`shell`参数中不能含有字母和数字。但只要我们能找到方法将非字母数字字符转化为可执行的PHP代码,就可以绕过这个限制。例如,通过URL编码、十六进制表示或其他编码方式,将字符转换为可执行的形式。然后,我们可以利用PHP的动态函数执行特性,如`assert`、`system`、`file_put_contents`或`call_user_func`等,拼接出一个函数名并执行,从而实现代码注入。 关于PHP的动态执行,`assert()`在PHP 5中是一个函数,可以像`eval()`一样使用,但在PHP 7中,它变成了语言结构,无法再作为函数名来动态执行代码。在这种情况下,可以考虑使用`file_put_contents()`等其他函数来达到类似的效果。 PHP中的一些基础知识对于构造Webshell至关重要: 1. PHP短标签:PHP有三种标签形式,除了最常见的`<?php ... ?>`之外,还有`<? ... ?>`和`<?= ... ?>`。如果`php`关键字被过滤,可以使用其他两种短标签作为替代,而且在短标签内,代码末尾不需要分号。 2. 反引号(`):在PHP中,反引号包裹的代码会直接执行系统命令,但若要输出结果,还需要结合`echo`等函数。例如:`<?php echo `ls /`; ?>` 3. 通配符在RCE(远程命令执行)中的利用:在正则表达式和Shell命令中,`?`和`*`具有不同的含义。在正则表达式中,它们用于匹配字符或表达式的出现次数;而在Shell命令行中,它们用于匹配任意字符或长度的字符串。通过这种方式,可以构建Payload来绕过关键词过滤,例如读取隐藏文件或路径。 了解这些基本概念后,可以更深入地研究如何构造和利用无字母数字Webshell。在实际的安全测试和防御中,理解和掌握这些技巧对于提高网站的安全性至关重要。同时,随着技术的发展,攻击手段和防御策略也在不断演变,因此,持续学习和更新知识是保持Web安全的关键。
剩余37页未读,继续阅读
- 粉丝: 10w+
- 资源: 47
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助