其他分享
首页 > 其他分享> > CTFSHOW-爆破-WEB21-28

CTFSHOW-爆破-WEB21-28

作者:互联网

web21

打开网站弹出登录窗口

用burpsuite抓包

 

网站采用的是Basic认证,详细参考https://www.cnblogs.com/rinack/p/7595232.html

 输入的用户名和密码以base64的形式传输

使用burpsuite的intruder功能

payloads选择Cutom iterator

position1

 

 

 

position2

使用本题提供的字典

 

添加base64加密

 

取消特殊符号的编码,因为base64加密后可能会出现‘=’。

 

 

爆破成功

 

web22

用Layer进行子域名爆破

 

找到flag.ctfer.com

 

 

 

web23

<?php

/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date:   2020-09-03 11:43:51
# @Last Modified by:   h1xa
# @Last Modified time: 2020-09-03 11:56:11
# @email: h1xa@ctfer.com
# @link: https://ctfer.com

*/
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代码分析

对传入的token进行md5,并且需要满足一系列的条件

直接用burpsuite爆破,不用分析逻辑==

 

自定义真好用

 

 

先试下三位,应该够了

每个位置选择a-z,A-Z,0-9

 

这样爆破唯一坏处就是有点慢,服务器可能处理不过来。==

太慢了,放弃了

还是自己写脚本来判断吧。

给的php代码,那肯定写php脚本了

<?php
error_reporting(0);

$string = '0123456789QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm';
for($a=0;$a<strlen($string);$a++){
    for($b=0;$b<strlen($string);$b++){
        for($c=0;$c<strlen($string);$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";
                }
            }
        }
    }
}
?>

跑出来很多匹配的

 

随便传一个,得到flag

 

 web24

<?php

/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date:   2020-09-03 13:26:39
# @Last Modified by:   h1xa
# @Last Modified time: 2020-09-03 13:53:31
# @email: h1xa@ctfer.com
# @link: https://ctfer.com

*/

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');
}

?> 

这道题显然是伪随机数,真正的随机数是不可能的。

在php中,当mt_srand即种子被确定后,后面生产的随机数都可以计算出来。

 

很简单。

 

 

web25

分析代码

<?php

/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date:   2020-09-03 13:56:57
# @Last Modified by:   h1xa
# @Last Modified time: 2020-09-03 15:47:33
# @email: h1xa@ctfer.com
# @link: https://ctfer.com

*/


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');
}

$flag不知道,所以种子也不知道,==

但是当判断不正确时,会输出$rand,尝试反推出mt_srand。

利用工具:https://github.com/Al1ex/php_mt_seed

 

显然计算出mt_rand=1899588896

 

 

 

种子可能的数据有几个。

 先试一下最后一个:2864159902

 

 

成功拿到flag

web26

字典就用web21给的那个就可以。

 

 web27

 

录取名单下载下来瞧一瞧

 

出生年月被隐藏了。

 

这儿刚好可以用姓名和身份证号登录

用burpsuite爆破

这里抓包的时候第一个抓到的不是我们需要的包,drop掉,第二个才是

 

 

 

 要爆挺久的

unicode解码,得到帐号和密码

 

登录,得到flag

web28

 

 看提示,让我们爆破目录,

 

 

 

 

有一个200的目录,打开发现flag

 

标签:爆破,WEB21,28,burpsuite,mt,flag,CTFSHOW,php,com
来源: https://www.cnblogs.com/fallingskies/p/14365307.html