Ctfshow之web入门爆破21-28

注:在使用burp爆破21、27、28题时会出现爆破失败的情况发生,这可能是burp爆破速度太快导致的,我用的2021.8版本在Intruder-Resource Pool新建资源池,将最大并发请求改为10,延迟200,旧版本在Options里面改线程数即可

Web21

涉及工具:burpsuite (burp suit 使用教程
解题思路:

打开环境,根据提示使用burp suite进行爆破

输入账号密码:admin 123123并对网站进行抓包

image-20220310194358196

得到一串base64加密的密文,解密得到账号密码的传递方式

image-20220310194538814

传递到攻击器,添加密码的payload对密码进行爆破

image-20220310194702544

用题目所给的文件进行密码爆破

image-20220310194906092

对爆破的密码进行加密

image-20220310195005972

爆破到正确的密码

image-20220310195331639

账号admin密码shark63

登陆得到flag:flag{c60b605b-4381-4f2e-9af3-019d37b5aa2b}

Web22

涉及知识点:网站子域名爆破

域名爆破推荐工具:Layer子域名挖掘机 在线子域名爆破

域名爆破,因为链接失效,直接献上flag:flag{ctf_show_web}

Web23

涉及工具:python(不会装request库的伙伴看这里:PyCharm中安装requests库
解题思路:

打开环境,发现一串PHP代码,根据代码可知token使用md5加密,第一位=十四位=十七位,(第一位+第十四位+第十七位)/第一位=第三十一位

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

}
?> 

看得懂代码,但是经验太少,不知道怎么做,网上查看大佬的解题方法尝试一下。

import base64
import hashlib
import random,requests
import time
def toint(m):
    if ord(m)<=57 and ord(m)>=48:
        return ord(m)-48
    else:
        return 0
for x in range(33,127):
    for y in range(33,127):
        i = chr(x)
        j = chr(y)
        i = i+j
        flag = i
        i = i.encode('utf-8')
        a = hashlib.md5()
        a.update(i)
        m = a.hexdigest()
        if m[1:2] == m[14:15] and m[14:15] == m[17:18]:
            if toint(m[31:32])==3 and toint(m[1:2])!=0:
                print(flag)



运行得到结果:3j ZE c$

使用get传参(URL/?token=***),当token=3j时得到flag:ctfshow{f61764eb-5cdc-44b4-8201-0e9d5e044615}

Web24

涉及工具:PHPstrom

打开环境,看到一串php代码

<?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_srand()函数

百度搜索得知是伪随机数,写一个PHP脚本

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

运行得到参数1155388967

构造payload:?r=1155388967

得到flag:flag{d21e9236-c066-4f43-bb8e-cb7b5c631a67}

Web25

涉及工具:php_mt_seed

打开环境,查看源码,进行审计:

<?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获得$rand的值,此时$rand=mt_rand()的值

也就是伪随机数的值

在此我获得的随机数为-81925808

使用php_mt_seed进行爆破

root@root:~/桌面/php_mt_seed/php_mt_seed-4.0# ./php_mt_seed 81925808
Pattern: EXACT
Version: 3.0.7 to 5.2.0
Found 0, trying 0xfc000000 - 0xffffffff, speed 2429.8 Mseeds/s 
Version: 5.2.1+
Found 0, trying 0x16000000 - 0x17ffffff, speed 31.7 Mseeds/s 
seed = 0x167c986a = 377264234 (PHP 7.1.0+)
Found 1, trying 0x26000000 - 0x27ffffff, speed 31.2 Mseeds/s 
seed = 0x26f7e085 = 653779077 (PHP 7.1.0+)
Found 2, trying 0x32000000 - 0x33ffffff, speed 31.0 Mseeds/s 
seed = 0x32186c0f = 840461327 (PHP 7.1.0+)
Found 3, trying 0x5c000000 - 0x5dffffff, speed 31.6 Mseeds/s 
seed = 0x5d1ba7fe = 1562093566 (PHP 5.2.1 to 7.0.x; HHVM)
seed = 0x5d1ba7fe = 1562093566 (PHP 7.1.0+)
Found 5, trying 0xca000000 - 0xcbffffff, speed 32.9 Mseeds/s 
seed = 0xcaf67e66 = 3405151846 (PHP 5.2.1 to 7.0.x; HHVM)
seed = 0xcaf67e66 = 3405151846 (PHP 7.1.0+)
Found 7, trying 0xfe000000 - 0xffffffff, speed 33.3 Mseeds/s 
Found 7

在PHP7.x中找到了一个种子:653779077

因为$_COOKIE[‘token’]的值要等于两个随机数相加

所以使用脚本:

<?php
mt_srand(653779077);
echo mt_rand()."\n";
$result = mt_rand()+mt_rand();
echo $result;

得到结果:81925808 (得到的随机数);1843171571 (token的值)

image-20220312223426138

将token传入cookie并且让/?r=得到的随机数即可得到flag:ctfshow{a538f7fc-d392-46ad-a24c-b740a5f7a24e}

Web26

涉及工具:burpsuite

打开环境,按照题目要求使用爆破,尝试使用burpsuite爆破

先不输入账号密码进行抓包,发送到重放器重放器重放,结果直接返回flag

image-20220312230609883

flag:flag{dfe1c2cf-9387-48a9-8a20-1e999599e383}

Web27

涉及工具:burpsuite

打开环境,是一个登录界面,打开录取名单下载附件,得到录取人员信息

image-20220312231252500

但是身份信息的出生年月被隐藏

在学生学籍信息查询系统里面发现只需要名字跟身份证号即可查到信息

此处身份证号码可使用爆破

burpsuite抓包爆破

image-20220312231706478

此处身份证信息未被加密,发送至攻击器爆破

image-20220313165146180

在响应包19900201中找到一串不一样的Unicode编码

image-20220313165026926

使用Unicode转中文解码得到:恭喜您,您已被我校录取,你的学号为02015237 初始密码为身份证号码

使用学号跟密码登录网站得到flag{ddb5417b-69fd-4f31-b8b8-458f2178fc84}

Web28

涉及工具:burpsuite

题目提示:通过暴力破解目录/0-100/0-100/看返回数据包,爆破的时候去掉2.txt 仅仅爆破目录即可

打开环境,环境链接为:http://8d4a8809-7f38-4354-bc57-819acd09c9a7.challenge.ctf.show/0/1/2.txt

根据题目提示应该是爆破/0/1/部分

使用burpsuite抓包,进行爆破

image-20220313140912882

添加payload进行爆破

image-20220313141249111

在返回的响应包中找到flag

image-20220313164108059
flag{2687ab94-d102-4062-bce3-2e1cb29e81df}

 

 

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇