CTFSHOW-WEB入门-爆破


web22

①题目提示:域名也可以爆破的,试试爆破这个ctf.show的子域名

②emmm,根据提示直接得出flag了

web23

①题目提示:还爆破?这么多代码,告辞!

②题目给出的关键代码为

include('flag.php');
if(isset($_GET['token']))
{
    $token = md5($_GET['token']);
    if(substr($token, 1,1)===substr($token, 14,1) && substr($token, 14,1) ===substr($token, 17,1))
    {
        if((intval(substr($token, 1,1))+intval(substr($token, 14,1))+substr($token, 17,1))/substr($token, 1,1)===intval(substr($token, 31,1)))
        {
            echo $flag;
        }
    }
}
<?php
error_reporting(0);
$string = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
print (strlen($string)."\n");

for ($a = 0; $a < 62; $a++) {
    for ($b = 0; $b < 62; $b++) {
        for ($c = 0; $c < 62; $c++) {
            $flag = $string[$a] . $string[$b] . $string[$c];
            $token = md5($flag);
            if (substr($token, 1, 1) === substr($token, 14, 1) && substr($token, 14, 1) === substr($token, 17, 1)) {
                if ((intval(substr($token, 1, 1)) + intval(substr($token, 14, 1)) + substr($token, 17, 1)) / substr($token, 1, 1) === intval(substr($token, 31, 1))) {
                    echo $flag . "\n";
                }
            }
        }
    }
}

运行结果有很多

这是假设传入的值是三个字符的情况,如果假设两个字符也完全可以,比如:、

同样也可以

web24

①题目提示:参考PHP随机数的伪随机数 mt_srand(seed); 函数播种 Mersenne Twister 随机数生成器。

②下面是题目关键代码:

if(isset($_GET['r']))
{
    $r = $_GET['r'];
    mt_srand(372619038);
    if(intval($r)===intval(mt_rand()))
	{
        echo $flag;
    }
}

首先介绍两个函数:

mt_srand()//播种Mersenne Twister随机生成器
mt_rand()//生成随机数

简单来说mt_srand()通过分发seed种子,然后种子有了,靠mt_rand()生成随机数

<?php
mt_srand(372619038);
echo mt_rand();
?>

运行一下得到1155388967,然后传一下参数就得到了。

这题主要考察的是php伪随机数,但题目本身还是比较简单的。

相关