web_爆破

web_爆破

blank Lv2

前言

很少做爆破的题,学习ing

web21

下载附件的dic.zip,发现给了一个字典,进入靶场发现要登录,猜测是字典爆破。
抓包发现这个请求头

1
Authorization: Basic YWRtaW46MQ==//这个是base64编码的admin:1

我们对这个后面插入给的字典并base64编码

1
Authorization: Basic {{base64enc(admin:{{payload(最新网站后台密码破解字典)}})}}

爆破可得

web22

根据题目提示是爆破子域名,但是这个题估计把这个子域名下线了。所以看wp学习一下。

看到用layer,询问了一下ai发现只适用于Windows,所以下载了findomain,还是可以搜索的。不过findomain是利用证书等信息进行检索整合。

1
findomain -t example.com

还是有信息

web23

打开靶场看见一段php代码

本来想复制过来审计的,但是一直调整不好格式,遂截图。

以下是代码是审计部分(orz太久不审计了需要复建一下,顺便记录一些函数功能)

  1. 设置读取token为get参数,将其md5化
  2. substr($token, 1, 1) 是 PHP 的字符串截取函数调用,作用是:从 $token 字符串的第 2 个字符开始,截取 1 个字符。
  3. 即,第一层条件校验为token的第2、15、18位字符相等
  4. intval() 是 PHP 的内置函数,作用是:获取一个变量的整数值。通常是直接截断,解析数字
  5. 即,第二层条件校验为token的的(第2位+第15位+第18位)/第2位=第31位,即第31位为3则echo flag

接下来要满足这个条件,我们需要写一个爆破脚本。

1
2
3
4
5
6
7
8
9
10
import hashlib

for i in range(10**7):
s = str(i)
h = hashlib.md5(s.encode()).hexdigest()

if h[1] == h[14] == h[17] and h[1] in "123456789" and h[31] == "3":
print("token = ",s)
break

  1. hashlib是一个哈希库
  2. encode()是把字符串转换成比特流, “114514” -> b’114514
  3. hexdigest()把输出转化成十六进制字符串形式

web24

代码审计

  1. 接受get参数r
  2. mt_srand() 是 PHP 的内置函数,用于为 Mersenne Twister(梅森旋转算法) 随机数生成器设置种子。它的作用是初始化或重置随机数生成器的状态。
  3. 这里种子被固定了,所以可以提前算出来

写个脚本吧

1
2
3
4
5
<?php
mt_srand(372619038);
$r = intval(mt_rand());
echo $r;
?>

web25

懒得截图了,直接审计吧

  1. 接受参数r
  2. mt_srand(hexdec(substr(md5($flag), 0,8)));承接上文,将md5的flag截取前八位,然后十六进制化,作为mt_srand的种子
  3. rand = r - mt_rand
  4. rand为0的时候,token为两次mt_rand随机数之和时echo flag

先传一次r试试,得到第一次echo的rand为-936176863,则第一次的随机数为936176863
爆破种子工具php_mt_seed https://github.com/openwall/php_mt_seed
爆破后得到很多种子,根据种子爆破token,最终我用第二个种子可以成功

爆破脚本如下

1
2
3
4
5
6
7
8
9
<?php
$seed = 0x0b54482b;
mt_srand($seed);

$r = mt_rand();

echo "r: $r\n";
echo mt_rand() + mt_rand();
?>

web26

根据提示这个可以爆,且登录连接不上,可以拿出来我们准备好的rockyou了(((
把准备好的字典导入yakit可能需要一点时间……
算了还是别用rockyou了,我的电脑电扇呼呼呼了(((

这里还是要字典爆破密码,最终密码为7758521。
关于爆破。
因为我习惯用yakit,所以就用yakit导入了一个字典,这里我用的字典是Seclists的000000-password-seclists.txt,导入后发包,在规则配置中找到匹配器配置筛选功能,修改匹配规则,最终等待全部发完包之后可以提取到最终成功的密码。

当然,等待爆破也是**。建议直接跳过。

web28

抓包发现怎么全都302啊。
我们对0/1参数进行爆破,范围我选取了0-99,插入字典并过滤,找返回200的就行了。

这个题好没意思……

总结

花了一点时间,中间也出了一点问题跳过了一些题目……代码审计和算术爆破我都能接受,直接爆破字典还是太烦人了……

没有什么特别好总结的,主要就是算术和字典爆破。算术可能要经过代码审计和自己写脚本。

但是我懒得找字典orz

  • Title: web_爆破
  • Author: blank
  • Created at : 2026-10-28 20:15:50
  • Updated at : 2026-10-28 21:54:31
  • Link: https://b1ank799.github.io/2026/10/28/web_爆破/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments