PHP 代码审计 --------代码执行漏洞

文章介绍了PHP中的eval和assert函数用于执行PHP代码,回调函数如call_user_func的使用,以及动态执行函数的方法。此外,还详细讨论了正则表达式的各种操作,包括preg_match_all、限定符和边界限定等,并提到了preg_replace函数及其潜在的安全风险,如/e模式允许代码执行。
摘要由CSDN通过智能技术生成

常见的函数

        eval和assert函数

                        eval()、assert() 将输入的字符串参数作为PHP程序代码来执行

 去访问,并加上php代码,看看是否能够执行

执行了!记得php代码结束要有    ;  分号 

不符合php代码,就会执行下面的输出, 

 同时!!在这里也可以执行系统命令,system()

 

        回调函数

                                call_user_func(callable $xxx [,$yyyy [,$zzz.....]])

                        $xxx是调用的自定义函数名称

                        #yyy 是自定义函数的参数

        常见的回调执行函数

                        call_user_func()  、 call_user_func_array()、array_map()等

第一个是要调用的函数名,第二个是该函数使用的参数

                

第二种形式

 

        动态执行函数

                        1.定义一个函数

                        2.将函数名(字符串)赋给一个变量

                        3.使用变量名代替函数名动态调用函数

                $_GET[]

接收GET请求a的参数作为一个函数,b是作为a函数里面的参数

        正则表达式

                preg_match_all 函数        
 

                

                

找到两个

        特殊字符,的   需要转义\

                

              3正则表达式 

 \d          0-9

 

 \d 匹配的都是数字    /D都是字母

 4自定义原子

 

         5限定符

                $pattern1 = '/go*gle/';  //*匹配前面出现的原子次数 0次 1次 或多次
                $pattern2 = '/go+gle/';        //+ 匹配前面出现的原词 1次或多次
                $pattern3 = '/go?gle/';        //? 匹配前面出现的原子 0次或1次
                $str = "ggle"

        

        6边界限定

                $pattern1 = '/^abc/';  //^ 匹配以 abc 开头的
                $pattern2 = '/abc$/';    // 匹配以 abc 结尾的
                $pattern3 = '/^abc$/';    //只匹配 abc

        7反向引用

                比如匹配一个时间的内容

                $pattern1 = '/\d{4}(-)\d{2}\\1\d{2}/'; // //1代表第一个()缓冲区 \\2
                $str = "2023-04-16";

            preg_replace函数      

                preg_replace(1,2,3)

                1 正则匹配的内容

                2 用于替换的字符串

                3 要进行搜索和替换的字符串或字符串数组

                        1 存在/e模式修正符修饰允许代码执行

 如果php 匹配到 /php/e 了,就执行第二个参数 $_GET['cmd']

让字符串匹配到正则

 

 让$str 匹配到 前面的正则,[/php/](.*?)[/php/]     /e 是修正      所以传参是[php]phpinfo()[php]        

还需要了解了解 正则表达式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值