ctfshow-web入门-爆破(web21-web28)

web21

打开后要求登录

image-20250318200511274

附件是一个密码字典

image-20250318200603151

使用bp抓包,将抓到的东西进行base64解码

image-20250318201014460

发现是admin:密码的键值对

image-20250318201114005

添加payload,payload类型为自定义迭代器,位置1为admin:

image-20250318202009705

位置2为导入的字典

image-20250318202044361

添加base64编码和取消url编码

image-20250318202134709

然后开始攻击,发现长度和其他不同的包,查看响应,发现flag

image-20250318201823174

web22

这道题现在好像不能做了?

image-20250318202333508

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

}
?>
  • md5算出的值是32位的16进制数
  • substr($token, 1, 1)是将token的字符串的第二个字符开始,取一个字符
php > $token = 'abcdefg';
php > echo substr($token,1,1);
b
  • 第一个判断条件是要求md5字符串第2个字符,第15个字符,第18个字符相等

  • 第二个判断条件是第2个字符,第15个字符,第18个字符转换为整数后相加的和与第2个字符的整数相除的结果(3)与最后一个字符的整数相等

综合两个条件:第2个字符,第15个字符,第18个字符相等,最后一个字符为3

使用如下脚本爆破:

import hashlib

for num in range(1,10000):
    md5_value = hashlib.md5(str(num).encode('utf-8')).hexdigest()
    if md5_value[-1] == '3':
        if md5_value[1:2] == md5_value[14:15] and md5_value[1:2] == md5_value[17:18]:
            print(num)

得到如下结果:

$ python 1.py
422
1202

尝试传入url?token=422,得到flag

image-20250318213529540

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

?> Linux version 5.4.0-163-generic (buildd@lcy02-amd64-067) (gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.2)) #180-Ubuntu SMP Tue Sep 5 13:21:23 UTC 2023 Linux version 5.4.0-163-generic (buildd@lcy02-amd64-067) (gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.2)) #180-Ubuntu SMP Tue Sep 5 13:21:23 UTC 2023
  • mt_srand(372619038);

    • 这行代码使用 mt_srand 函数设置Mersenne Twister随机数生成器的种子为 372619038。设置种子后,每次调用 mt_rand 都会生成相同的随机数序列。
  • intval(mt_rand())

    • 将生成的随机数转换为整数。

使用本地php生成随机数

php > mt_srand(372619038);
php > echo mt_rand();
1155388967

传入url?r=1155388967,得到flag

image-20250318214240228

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');
}
Linux version 5.4.0-163-generic (buildd@lcy02-amd64-067) (gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.2)) #180-Ubuntu SMP Tue Sep 5 13:21:23 UTC 2023 Linux version 5.4.0-163-generic (buildd@lcy02-amd64-067) (gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.2)) #180-Ubuntu SMP Tue Sep 5 13:21:23 UTC 2023

先传入r=0,得到

image-20250319082338718

要满足条件if((!$rand)),则$rand=0;

则r=1141567437,为第一次生成的随机数

下载工具:https://www.openwall.com/php_mt_seed/

解压后使用Linux终端执行命令make,得到elf可执行文件

image-20250318222831894

Usage: ./php_mt_seed VALUE_OR_MATCH_MIN [MATCH_MAX [RANGE_MIN RANGE_MAX]] ...
$ ./php_mt_seed 1141567437
Pattern: EXACT
Version: 3.0.7 to 5.2.0
Found 0, trying 0x50000000 - 0x53ffffff, speed 13421.8 Mseeds/s
seed = 0x51f33dba = 1374895546 (PHP 3.0.7 to 5.2.0)
seed = 0x51f33dbb = 1374895547 (PHP 3.0.7 to 5.2.0)
Found 2, trying 0xfc000000 - 0xffffffff, speed 12434.9 Mseeds/s
Version: 5.2.1+
Found 2, trying 0x16000000 - 0x17ffffff, speed 269.4 Mseeds/s
seed = 0x16415710 = 373380880 (PHP 7.1.0+)
Found 3, trying 0x58000000 - 0x59ffffff, speed 261.3 Mseeds/s
seed = 0x59135498 = 1494439064 (PHP 5.2.1 to 7.0.x; HHVM)
seed = 0x59135498 = 1494439064 (PHP 7.1.0+)
Found 5, trying 0x66000000 - 0x67ffffff, speed 262.1 Mseeds/s
seed = 0x662adf41 = 1714085697 (PHP 5.2.1 to 7.0.x; HHVM)
seed = 0x662adf41 = 1714085697 (PHP 7.1.0+)
Found 7, trying 0xc6000000 - 0xc7ffffff, speed 259.5 Mseeds/s
seed = 0xc7b65f2e = 3350617902 (PHP 5.2.1 to 7.0.x; HHVM)
seed = 0xc7b65f2e = 3350617902 (PHP 7.1.0+)
Found 9, trying 0xfe000000 - 0xffffffff, speed 258.4 Mseeds/s
Found 9

尝试这几个值,发现373380880、1494439064、1714085697、3350617902都可以得到第一个相同的随机数,但是后两个随机数不同

php > mt_srand(3350617902);
php > echo mt_rand();
1141567437

依次尝试传入,只有最后一个可以

php > mt_srand(3350617902);
php > echo mt_rand();
1141567437
php > echo mt_rand()+mt_rand();
3544738301

Cookie传入,得到flag

image-20250319082802039

web26

image-20250319083043374

点击同意协议,开始安装

image-20250319084030119

点击确认无误,开始安装,使用bp抓包,(只有用Chrome才能抓到包,Firefox不行)

填写以下值,爆破数据库密码

image-20250319084210558

image-20250319083956359

得到flag

image-20250319084136362

web27

点击下载录取名单

image-20250319084518918

image-20250319084617593

发现需要姓名和身份证号

image-20250319084641911

录取名单里有姓名和部分身份证号

image-20250319084740846

缺失的部分正好是出生日期,于是使用bp爆破(同样只能用Chrome抓包)

image-20250319085218984

选择爆破日期,格式为:yyyyMMdd

image-20250319085637022

点击开始攻击,得到身份证号为621022199002015237

image-20250319091840405

查看响应

image-20250319091930796

解码后得到学号和初始密码

image-20250319091813930

登录后得到flag

image-20250319092143019

web28

发现路径为url/0/1/2.txt

image-20250319092443271

于是爆破目录url/0-100/0-100/ # 仅爆破目录,删除2.txt

在Linux执行命令$ seq 0 100 > 1.txt,生成字典

选择集群炸弹攻击,在两个位置都添加相同的字典

image-20250319162127803

开始攻击,发现flag在目录/72/20/

image-20250319162335890

posted @ 2025-03-29 22:12  dhdhsiwi  阅读(154)  评论(0)    收藏  举报