CTFshow  web入门   (爆破)

web21

先随便输入账号密码,抓包

CTFshow  web入门   (爆破)

base64解密,可以发现账号密码的形式为 账号:密码,这里我们采用 Custom iterator进行爆破

使用方法可参考:Custom iterator的使用

CTFshow  web入门   (爆破)

CTFshow  web入门   (爆破)

CTFshow  web入门   (爆破)

CTFshow  web入门   (爆破)

爆破即可得到flag

CTFshow  web入门   (爆破)

web22

子域名爆破

flag.ctfer.com

web23

<?php

error_reporting(0);

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;
        }
    }
}else{
    highlight_file(__FILE__);

}
?>

直接在源代码上改改,写个脚本就好了 (假设是三位的数)

<?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";
                }
            }
        }
    }
}

解出来答案很多

CTFshow  web入门   (爆破)

随便GET传参一个即可得到flag

web24

考察点:伪随机数

了解伪随机数可参考此文伪随机数

<?php

error_reporting(0);
include("flag.php");
if(isset($_GET['r'])){
    $r = $_GET['r'];
    mt_srand(372619038);
    if(intval($r)===intval(mt_rand())){
        echo $flag;
    }
}else{
    highlight_file(__FILE__);
    echo system('cat /proc/version');
}

CTFshow  web入门   (爆破)

GET传参即可

web25

<?php

error_reporting(0);
include("flag.php");
if(isset($_GET['r'])){
    $r = $_GET['r'];
    mt_srand(hexdec(substr(md5($flag), 0,8)));
    $rand = intval($r)-intval(mt_rand());
    if((!$rand)){
        if($_COOKIE['token']==(mt_rand()+mt_rand())){
            echo $flag;
        }
    }else{
        echo $rand;
    }
}else{
    highlight_file(__FILE__);
    echo system('cat /proc/version');
}
$rand = intval($r)-intval(mt_rand());

根据这句,可以通过传入的r得到第一个随机数,之后我们可以通过工具php_mt_seed 地址

进行逆推,得到种子

CTFshow  web入门   (爆破)

通过抓包查看响应头我们可以知道该php版本为7.3.11,因此可能的种子就是如图两种

if($_COOKIE['token']==(mt_rand()+mt_rand()))

通过该行代码我们知道要将两个随机数相加,脚本如下

CTFshow  web入门   (爆破)

burp抓吧修改即可

CTFshow  web入门   (爆破)

关于这里为什么要?r=1819399594,因为

 if((!$rand)){
        if($_COOKIE['token']==(mt_rand()+mt_rand())){
            echo $flag;
        }

只有在$rand不存在时,$_COOKIE['token']==(mt_rand()+mt_rand() 才能执行,而1819399594是我们在传?r=0时页面输出的随机数

 $rand = intval($r)-intval(mt_rand());

此时的$rand = mt_rand()即第一个生成的随机数,因此只要我们使$r=mt_rand()=1819399594,就能让$rand=0,不存在,从而执行接下来的代码

web26

在安装页面,查看源码,可以发现js代码

CTFshow  web入门   (爆破)

在checkdb.php页面POST即可

CTFshow  web入门   (爆破)

web27

打开页面是正方教务系统,仔细点看下面有个录取名单,和 学生学籍信息查询系统

点录取名单,内容如下

CTFshow  web入门   (爆破)

可以看到身份证号不完全,少了生日(年月日),这里要爆破

CTFshow  web入门   (爆破)

爆破出来,学生学籍信息查询系统 查询之后会提示,教务系统用户名,以及登入初始密码为身份证

登入即可得到flag

CTFshow  web入门   (爆破)

web28

CTFshow  web入门   (爆破)

看到这个url,诡异的0和1,尝试爆破

CTFshow  web入门   (爆破)

burpsuite爆破的四种模式

这里要把2.txt去掉

使用Cluster bomb模式爆破从0-100的数字

CTFshow  web入门   (爆破)

相关文章:

  • 2021-06-14
  • 2022-12-23
  • 2022-12-23
  • 2021-09-04
  • 2022-12-23
  • 2021-12-08
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-06-27
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案