CTFshow web入门之爆破(web21-web28)

爆破:

web21:

题目描述:弹窗以及base64加密爆破
解题思路:
看到是弹窗爆破,那么直接用Burp抓包

在这里插入图片描述
1、Burp抓包,发现是经过base64加密过的

在这里插入图片描述

2、解密查看格式为admin:123

因此有两种爆破方法,在知道账号为admin的情况下,选取后半部分进行爆破较为简单,在不知道账号以及密码的情况下,爆破为三个参数,参数一:admin,参数二:“:”,参数三:123,但这种爆破事件较长

在这里插入图片描述

参数选择:

在这里插入图片描述

需要注意的是,进行base64编码,切记不可为符号再编码,base64可能存在=

在这里插入图片描述

爆破成功,获得账号密码=>admin:shark63

方法二参考链接:https://blog.csdn.net/song123sh/article/details/120787344

web22:

题目描述:域名爆破

解题思路:
该题失效,爆破不出来

域名爆破地址:
在线地址:https://dnsdumpster.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__);

}
?>
代码要求get传入的token经过md5加密后,第1=14=17位并且(第1+14+17位)/1=31位,可以写一个python脚本跑一下,应该有很多种可能。
import hashlib

a = '0123456789abcdefghijklmnopqrstuvwxyz'
for i in a:
	for j in a:
		t = (str(i)+str(j)).encode('utf-8')
		md5 = hashlib.md5(t).hexdigest()
		if md5[1:2] == md5[14:15] == md5[17:18]:
			if (int(md5[1:2])+int(md5[14:15])+int(md5[17:18]))/int(md5[1:2]) == int(md5[31:32]):
				print(t)

输出结果3j和ZE,但是访问了以后发现ZE没有用

web24:

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

解题思路:
mt_srand() 函数播种 Mersenne Twister 随机数生成器。
提示:从 PHP 4.2.0 开始,随机数生成器自动播种,因此没有必要使用该函数。

审计代码,当mt_srand(372619038)函数生成的随机数等于参数r时,得到flag
那么使用php代码运行查看mt_srand(372619038)运行结果

<?php
mt_srand(372619038);
echo(mt_rand());
?>
    结果为:1155388967

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

解题思路:
mt_srand(hexdec(substr(md5($flag), 0,8)));
将flag进行md5加密,返回从第一个到第八个数,再将数字加密
!r a n d : 满 足 这 个 条 件 表 示 rand:满足这个条件表示rand:满足这个条件表示rand=0,即r=mt_rand()
再满足token=mt_rand()+mt_rand() ,这里不是说token等于mt_rand()的两倍,而是token等于第一次加密的值加上第二次加密的值,因为生成的随机数可以说是一个线性变换,即可得到flag
现在为了获得flag,即获得第一次加密的值即可,
mt_scrand(seed)这个函数的意思,是通过分发seed种子,然后种子有了后,靠mt_rand()生成随机数, 要获得第一次加密的值就需要获得种子,由函数得:r=0时,得到随机数rand
    
当R=0时,mt_rand()=1876796054,通过php_mt_seed脚本爆破解密,得到种子分别为
seed = 0xfc6cfb4c = 4235000652 (PHP 3.0.7 to 5.2.0)
seed = 0xfc6cfb4d = 4235000653 (PHP 3.0.7 to 5.2.0)
seed = 0x1415f353 = 336982867 (PHP 5.2.1 to 7.0.x; HHVM)
seed = 0x78ed480f = 2028816399 (PHP 5.2.1 to 7.0.x; HHVM)
seed = 0x78ed480f = 2028816399 (PHP 7.1.0+)
 
通过F12查看请求头可知,PHP版本为7.3.1,所以,可从版本较高处测试,并且通过脚本计算mt_rand()R,以及token值。
<?php
mt_srand(2028816399);
echo mt_rand()."\n";
echo mt_rand()+mt_rand();
?>
    得到结果:18767960542234805933

在这里插入图片描述

web26:

题目描述:
说是爆破

解题思路:
1、网页点击到CTFshow flag管理系统安装时,点击开始安装后,显示数据库连接成功,但没有后续了

在这里插入图片描述

2、抓包尝试一下,得到flag

在这里插入图片描述

web27:

题目描述:

在这里插入图片描述

解题思路:

1、在登录页面上发现一个录取名单和一个学生学籍信息查询系统,下载录取名单后,得到以下信息

在这里插入图片描述

2、查看身份证号码,中间缺失部分为出生日期,并且登录学生学籍信息查询系统可以发现,仅需要姓名和身份证号即可查询,那么就可以通过编写字典以及Burp进行爆破,字典格式为19990101。

在这里插入图片描述

3、爆破得到中间缺失部分为19900201,从学生学籍信息查询系统登录查询,但并不知道为啥,点击查询后没有反应

在这里插入图片描述

4、bp抓包,修改查询信息,显示成功,且后面发现一段经过Unicode编码的数据

在这里插入图片描述

5、解码得到学号以及初始账号密码

在这里插入图片描述

在线Unicode编码地址:https://tool.ip138.com/ascii/

6、登录成功获得flag

在这里插入图片描述

web28:

题目:
在这里插入图片描述

解题思路:这个题目的目录很不对劲,这里我们爆破目录看看,第一次爆破没有什么东西,这里我们将2.txt去掉,重新爆破,发现flag

在这里插入图片描述

爆破总结:

爆破在理解题目意思以及正确构造爆破payload内容还是很简单的
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值