web入门 爆破

web21

题目是个登录框
在这里插入图片描述

附件里面有一个爆破密码
在这里插入图片描述
应该是就用这个爆破了

抓个数据包先
在这里插入图片描述

在这里插入图片描述

这里的用户名和密码是通过:连接,然后base64加密的

第一个放admin
在这里插入图片描述

第二个放:
在这里插入图片描述
第三个放下载的密码包

在这里插入图片描述

然后还需要进行加密
在这里插入图片描述
在这里插入图片描述

开始爆破,得到成功登录的信息

哦,设置错了……,应该是encode

在这里插入图片描述

……经过了漫长的等待,谁知道竟然把密码放在最后面几百个里面
在这里插入图片描述

web22

“域名也可以爆破的,试试爆破这个ctf.show的子域名”

找工具爆破了半个小时,啥也没出来,看了下hint气死

在这里插入图片描述

果然这个子域名失效了……

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__);

}
?>

intval — 获取变量的整数值
substr — 返回字符串的子串

应该是要求token的md5值的,第二位、第十五位和第十八位相等。还限制,三者的和除以第二位的值,等于第三十二位的值。

三者的和除以第二位,三者相等,等于任何一位的值,除以任一位的商应为3,即第三十二位的整数值应该是3

需要求一个md5值,当作token传值过去

import hashlib
a = "0123456789qwertyuiopasdfghjklzxcvbnm"
for i in a:
    for j in a:
        b = (str(i) + str(j)).encode("utf-8")
        m = hashlib.md5(b).hexdigest()
        if(m[1:2] == m[14:15] and m[14:15] == m[17:18]):
            if ((int(m[1:2]) + int(m[14:15]) + int(m[17:18])) / int(m[1:2])) == int(m[31:32]):
                print('原字符串为:',b)
                print('加密后字符串为:',m)

跑出来的结果为,3j
加密后的值为,f12882fc7cde8e1ba1cadec10e3e9393

满足题目限制
在这里插入图片描述

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

?>

mt_rand() 使用 Mersenne Twister 算法返回随机整数。

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

当随机数的种子是个确定值时(如本题),mt_rand()所得到的随机数也是确定的,所以运行后发现mt_rand()=1155388967,传参r=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');
}

分析代码可以发现,先令r=0,可以得到mt_rand()的随机值 2119447047
在这里插入图片描述

得到mt_rand()的值后,需要推算种子seed的值,利用工具
在这里插入图片描述
然后计算mt_rand()的第二、三次的随机值之和。php在线工具
在这里插入图片描述
这里的第一个值与r=0的值相等,所有后面就是第二三个随机值的和

令r为mt_rand()的值,令cookie为token=第二、三个随机值的和
(不行就试试后面的seed的值、这是最后一个才有flag的)
在这里插入图片描述

web26

打开后是个安装的界面
在这里插入图片描述

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

然后就没有了,根据题目说可以爆破,那有可能是爆破安装的这个密码,用到web21题给的字典库
在这里插入图片描述
在这里插入图片描述
等好久,终于等到了个不同length的响应

这个题还有一种非预期解 https://oatmeal.vip/writeup/ctfshow/ctfshow-web/

web27

是个教务系统登录,有录取名单和学籍查询
在这里插入图片描述
录取名单:
在这里插入图片描述
学籍查询:
在这里插入图片描述

猜测应该是用录取名单的姓名+身份证号登录,查询录取信息
在登陆查询页面查看源代码
在这里插入图片描述
hackbar工具POST提交
在这里插入图片描述

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

设置好日期范围,开始爆破
在这里插入图片描述
成功爆破,返回的是unicode编码后的,解码一下
这个还挺快,生日是19900201

得到学号和密码,去刚开始的教务系统登录
在这里插入图片描述

web28

在这里插入图片描述
看到这地址之后,应该是去爆破目录
在这里插入图片描述

payload1和2一样设置,从0到100
在这里插入图片描述

开始爆破
在这里插入图片描述

终于在两千多次后成功了

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值