if(preg_match(‘/system|eval|assert|call|create|preg|sort|{|}|filter|exec|passthru|proc|open|echo|`| |.|include|require|flag/i’,$str1) 怎么绕过
时间: 2024-06-17 19:05:15 浏览: 149
if(preg_match('/system|eval|assert|call|create|preg|sort|{|}|filter|exec|passthru|proc|open|echo|`|\s|\.\s|include|require|flag/i', $str1))是一段PHP代码,用于检测字符串$str1中是否包含一些关键字,如果包含,则不执行一些敏感的操作。这是一种常见的安全措施,防止恶意代码执行。
如果你想绕过这段代码的检测,可以尝试以下方法:
1. 使用大小写混合、拼音、全角字符等方式来绕过关键字的检测。
2. 将字符串进行Base64编码,在传递到该代码段之前进行解码,绕过关键字的检测。
3. 使用正则表达式技巧,将关键字进行分割或者替换,使其无法被正则表达式匹配到。
4. 对于特定的关键字,可以将其拆分成多个字符,如把'exec'拆分成'e'、'x'、'e'、'c',然后将它们分别插入到其他字符中间,如将'a'替换成'aexece'。
5. 使用其他语言或者工具来执行敏感操作,如使用Python中的os.system()函数执行命令。
相关问题
preg_match("/ls|bash|tac|nl|
`preg_match` 函数在 PHP 中用于执行正则表达式匹配。在你提供的示例中,它试图匹配字符串中的 "ls", "bash", "tac", "nl" 或者以问号 "?" 开头的任意字符(因为 `?` 是一个通配符,代表单个字符)。
这是一个简单的使用示例:
```php
$string = "I want to run ls, bash and tac commands.";
$pattern = "/ls|bash|tac|nl\?/i"; // 注意:i 用于使匹配忽略大小写
if (preg_match($pattern, $string)) {
echo "Match found!";
} else {
echo "No match found.";
}
```
在这个例子中,如果 `$string` 包含 "ls", "bash", "tac", "nl" 或者以 "?" 结尾的任一单词,`preg_match` 将返回 true,否则返回 false。
preg_match("/flag|system|php|cat|sort|shell|\.| |\'/i"啥意思
这个正则表达式 `preg_match("/flag|system|php|cat|sort|shell|\.| |\'/i"` 的含义是在字符串中查找是否匹配特定的模式,这里是一组单词列表加上一些特殊字符:
1. `/` 开始和结束标志,表示这是一个正则表达式的开始和结束。
2. `i` 表示 "case-insensitive" 或者 "不区分大小写",意味着搜索会忽略字母的大小写。
3. `flag|system|php|cat|sort|shell|\.| |\'` 是一系列关键词和特殊字符:
- `flag`: 搜索 "flag" 这个词。
- `system`: 搜索 "system"。
- `php`, `cat`, `sort`, 和 `shell`: 分别搜索这四个词。
- `\.` 匹配点 (.),`.` 本身是一个特殊字符,所以需要转义。
- ` ` 表示空格,它匹配实际的空格字符。
- `'`: 匹配单引号 ('), 因为正则表达式中单引号也有特殊意义,所以需要用另一个单引号转义。
这个正则表达式用于检查某个字符串中是否存在这些词或包含这些字符之一。例如,在 PHP 中,`preg_match()` 函数会被用来判断给定的字符串是否符合这个模式。如果没有提供匹配的字符串作为参数,它会返回0;如果匹配成功,则返回1。
阅读全文
相关推荐
















