[ctfshow] web入门 21-28 爆破

web21

burp有一个功能叫做custom iterator(自定义迭代器)具体用法可以参考这个
抓包后发现没找到username和password的字段,但是发现了一个奇怪的东西
在这里插入图片描述
把后面的东西拿去解码发现是账号密码的base64的编码形式
在这里插入图片描述

所以拿burp来拼接后再编码来爆破
在这里插入图片描述
这题是由三部分组成:
用户名:密码
把每一部分的字典加上去后就开始设置编码
选择encode和base64编码
在这里插入图片描述
再取消Palyload Encoding编码 因为在进行base64加密的时候在最后可能存在 == 这样就会影响base64 加密的结果
然后爆破就行
爆破很久以后终于出来结果
在这里插入图片描述

web 23

这题有些新学到的知识

  • MD5加密可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5是最常见的摘要算法,速度很快,生成结果是固定的128 bit字节,通常用一个32位的16进制字符串表示。
    在这里插入图片描述
  • substr()函数,可以有三个参数
    在这里插入图片描述
  • intval()函数,用来把变量变成整数
    在这里插入图片描述
    php代码分析
<?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__);

}
?> 

变量token被md5加密,且它的第一位=第十四位=第十七位,化为整数后(第一位+第十四位+第十七位)/第一位=第三十一位
方法一:利用burp直接在url里爆破
在这里插入图片描述
方法二:写脚本,利用hashlib库直接判断出是哪个

import hashlib
dic = '0123456789qazwsxedcrfvtgbyhnujmikolp'
for a in dic:
    t = str(a)
    md5 = hashlib.md5(t.encode(encoding='utf-8')).hexdigest()
    if md5[1:2] == md5[14:15] and md5[14:15]== md5[17:18]:
        print(t)

结果只有8,但是提交上去不符合第二个条件,舍去,尝试两个拼接
出来好几个,每一个都提交试一下,发现3j是符合第二个条件的,出来flag
在这里插入图片描述

web 24

代码分析,出现了伪随机数,伪随机数的详解可以看这里涉及到mt_srand()mt_rand()

简单来说就是通过这个函数mt_srand()来设定一个种子seed 再通过mt_rand()来结合种子按照一定的规则得到一个随机数
这是一个线性的计算,每次请求得到的随机数都是不一样的,但是只要种子一样,得到的随机数都是像一个一次函数一样变化的,就像y=ax=b,x就是请求的次数,a和b就是由种子决定

在这里插入图片描述
在这里插入图片描述

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脚本来得到随机数

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

在这里插入图片描述
随机数出来了就可以构造payload/?r=1155388967
在这里插入图片描述

web 25

这个题需要使用工具php_mt_seed

分析代码,和上题一样是伪随机数的题目,通过分析可以得出如下思路

  • 种子涉及到了flag,所以应该是不能直接求到的
  • if((!$rand))要使这个为真就要让$rand=0,而$rand = intval($r)-intval(mt_rand())所以要得到随机数才行,让$r=$mt_rand()就可以了
  • if($_COOKIE['token']==(mt_rand()+mt_rand()))这个可以知道要在cookie里写入一个token,值为两次随机数相加,而不是第一次的随机数直接翻两倍
  • 为什么每一次的mt_rand()+mt_rand()不是第一次的随机数相加?因为生成的随机数可以说是一个线性变换(实际上非常复杂)的每一次的确定的但是每一次是不一样的,所以不能 进行第一次*2就得到mt_rand()+mt_rand() ,但是只要我们得到种子就可以在本地请求两次获得自己想要的值
  • 所以我们还要求得种子,这就要用到pho_mt_seed来逆推种子了
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');
}

先给r传值,r=0,这样就会得到随机数的相反数,所以随机数是1024884789
在这里插入图片描述
下一步就是使用php_mt_seed来逆推爆破种子
这个工具的使用步骤

  • 下载好工具后拉到kali里面,打开文件夹,运行终端,输入make
    在这里插入图片描述
  • 输入./php_mt_seed 随机数就可以开始爆破
    在这里插入图片描述

因为不知道是第几次得到这个随机数,所以爆破出了很多个

333458700
1393424143
3543501023

再写一个php的脚步来测试是哪个种子第一次就得到这个随机数,发现种子是1393424143
在这里插入图片描述
得到了种子,就可以请求两次并求和得到token的值了
在这里插入图片描述
要求的都求到了,接下来就是burp改一个包提交就行了
r=1024884789
token=1422233280
在这里插入图片描述

web 26

看代码

function check(){
	$.ajax({
	url:'checkdb.php',
	type: 'POST',
	dataType:'json',
	data:{
		'a':$('#a').val(),
		'p':$('#p').val(),
		'd':$('#d').val(),
		'u':$('#u').val(),
		'pass':$('#pass').val()
	},
	success:function(data){
		alert(data['msg']);
	},
	error:function(data){
		alert(data['msg']);
	}

});
}

发现空的提交竟然连接成功
在这里插入图片描述
直接抓包得到flag
在这里插入图片描述

web 27

点了名单后得到一个表,加密的地方刚好是出生年月日,可以使用爆破的方式吧身份证爆破出来,可以写py脚本,也可以用burp,burp有一个dates模块刚好用来爆破这个日期,所以推荐使用burp
在这里插入图片描述
打开学籍管理系统后以第一个人为例,用burp抓包,比较新的版本里的爆破模块有一个dates模块,专门用来爆破日期信息的,把格式调好,就设定一个范围开始爆破
在这里插入图片描述
爆破发现身份证的日期信息应该是19900201,这样身份证就出来了,就直接登录进去拿到flag
在这里插入图片描述
在这里插入图片描述

web 28

看到了2.txt就想到改数字,改了以后url就一直在变化加一些0101,访问不进去,所以选择burp来爆破目录,暴力破解目录/0-100/0-100/看返回数据包
在这里插入图片描述
如果不去掉2.txt还是没有回显的,所以爆破的时候记得去掉2.txt
在这里插入图片描述
爆破成功
在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

huamanggg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值