ctfshow爆破(21-28)

爆破练习

Web21

Bp抓包登录数据包,发送到攻击模块发现是base64加密了

发现格式为admin:1111

构造payload

自定义攻击模式custom iterator

admin,:,字典导入

解码发现密码

Web22

环境失效了

Web23

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;

        }

    }

}

代码审计

变量 token 被 md5 加密,且它的第一位 = 第十四位 = 第十七位,化为整数后(第一位 + 第十四位 + 第十七位)/ 第一位 = 第三十一位,则可获得 flag。

写py代码:

import hashlib

for i in range(1, 1000):

    # 将整数转换为字符串,并编码为字节

    token_bytes = str(i).encode('utf-8')

    token = hashlib.md5(token_bytes).hexdigest()

    # 检查第一个条件

    if token[1] == token[14] == token[17]:

        # 将字符转换为整数,并计算表达式

        sum_of_chars = int(token[1], 16) + int(token[14], 16) + int(token[17], 16)

        quotient = sum_of_chars / int(token[1], 16)

        # 将哈希值的第32个字符转换为十进制数

        target_value = int(token[31], 16)

        # 检查第二个条件

        if quotient == target_value:

            print(f'token={i}, md5={token}')

Web24

核心代码审计

$r = $_GET['r'];

    mt_srand(372619038);

    if(intval($r)===intval(mt_rand())){

        echo $flag;

}

函数解释:

mt_srand(): 用于设置 Mersenne Twister 随机数生成器的种子

mt_rand(): 则用于生成一个随机整数

intval():函数用于获取变量的整数值

生成的随机数是固定的爆破即可得到

<?php

mt_srand(372619038);

$r = mt_rand();

echo 'r='.$r;

?>

Web25

核心代码审计:

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;

        }

要求传参r随机生成种子不为0,和token值为(mt_rand()+mt_rand())相加但两个值是随机生成不相等,

工具下载地址

https://www.openwall.com/php_mt_seed/

传参?r=0

爆破种子

查看php版本

发现存在三个种子

Payload代码:

<?php

mt_srand(2243444795);

$rand = mt_rand();

$rand1 = mt_rand();

$rand2 = mt_rand();

echo $rand,"\n",$rand1,"\n",$rand2,"\n",$rand1+$rand2,"\n\n";

mt_srand(2783628342);

$rand = mt_rand();

$rand1 = mt_rand();

$rand2 = mt_rand();

echo $rand,"\n",$rand1,"\n",$rand2,"\n",$rand1+$rand2;

echo "\n";

echo "\n";

mt_srand(3195512284);

$rand = mt_rand();

$rand1 = mt_rand();

$rand2 = mt_rand();

echo $rand,"\n",$rand1,"\n",$rand2,"\n",$rand1+$rand2;

?>

Web26

页面输入数据抓包

发送到攻击模块,用字典爆破密码

爆破成功密码为:7758521

Web27

查看录取学生名单

学生管理系统登录抓包爆破

621022199002015237

得到学号

02015237

Web28

发现页面/0/1/2.txt

可能存在爆破文件目录获取信息

发送到攻击模块爆破目录名

爆破目录成功72/20

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值