代码审计-9 代码审计之正则表达式

反斜杠绕过正则进行命令执行

当我们输入两个反斜杠的时候第二个反斜杠会被转义,会输出一个反斜杠在这里插入图片描述

php中正则表达式,要对反斜杠过滤时需要添加四个反斜杠

下面的代码中,有两个反斜杠,第一个反斜杠第二个反斜杠进行转义后
留下一个反斜杠,这个反斜杠接着对 |进行转义,也就是说后面的|无效了
也就不会对\n进行过滤

也就是说下面的正则代码并不会对我们输入的\\n进行匹配过滤

在这里插入图片描述

结合linux环境特性,我们可通过命令中间添加\来绕过这个正则,从而执行系统命令

l's' -la
l$1s -la
l\s -\la

在这里插入图片描述

无字母数字WebShell

此处代码只接收除了字母,数字以外的其他字符
也就是说只能输入特殊字符,此时怎么进行绕过并获取shell

在这里插入图片描述
1.通过异或运算生成指定字符

在这里插入图片描述
在这里插入图片描述
php脚本
在这里插入图片描述

<?php
$arr =
    array('!','~','`','@','#','$','%','^','&','*','(',')','-','=','+','一','\'','"');
foreach ($arr as $a){
    foreach ($arr as $b){
        $answer = $a ^ $b;
        echo $answer.'='.$a.'^'.$b;
        echo PHP_EOL;
    }
}

2.取反运算

UTF8 编码的某个汉字,将其中的字符提取出来,进行取反得到对应的字符

在这里插入图片描述
在这里插入图片描述
3.自增运算

在这里插入图片描述

PHP7+新思路

PHP7之前是不允许使用($a)()这样的方法去执行动态函数,但是PHP7增加了对此的支持
在PHP7+的版本,我们可以通过('phpinfo')()执行phpinfo

此时将异或运算和PHP7+的新思路结合起来
可通过 ("\(\@@&/" ^ ",@,).@@")(); 来执行phpinfo
\(\@@&/,@,).@@进行异或运算得到phpinfo

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值