ctfshow_爆破

这里写目录标题

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: [email protected]
# @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__);

}
?>

源代码是这样的,然后发现要爆破这里给出脚本

<?php
error_reporting(0);
$str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
echo strlen($str);

for ($i = 0;$i < 62;$i++){
    
    
    for ($j = 0;$j < 62;$j++){
    
    
        $flag = $str[$i].$str[$j];
        $token = md5($flag);
        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;
            }
        }
    }
}
        
        
?>

python脚本

import hashlib
dic = '0123456789qazwsxedcrfvtgbyhnujmikolp'
# md5 = hashlib.md5(dic).hexdigest()
for a in dic:
    for b in dic:
        t = str(a)+str(b)
        t = t.encode(encoding='utf-8')
        md5 = hashlib.md5(t).hexdigest()
        if md5[1:2] == md5[14:15] and md5[14:15]== md5[17:18]:
            print(t)
            print(md5)
            print(md5[1:2])
            print(md5[14:15])
            print(md5[17:18])

在这里插入图片描述
这里两个答案ZE和3j

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

这里考察的是伪随机数
知识点:从 PHP 4.2.0 开始,随机数生成器自动播种,因此没有必要使用该函数 因此不需要播种,并且如果设置了 seed参数 生成的随机数就是伪随机数,每次生成的随机数 是一样的

编写php脚本

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

运行得到1155388967
通过get传参得到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');
}

参考文章
php伪随机数漏洞
种子破解程序下载地址
看程序可以知道我们传入的参数减去生成的mt_rand()要等于0才能进入下一个判断,所以我们必须要爆破出mt_rand().

WEB26

在这里插入图片描述
burp抓包爆破密码。

在这里插入图片描述

web27

在这里插入图片描述
这里下载下来有一个文件,然后发现这有个身份证但是少了8位,这里我们可以爆破出来。
在这里插入图片描述
在这里插入图片描述

得到身份证621022199002015237.
在这里插入图片描述
然后在这个网站https://www.bt.cn/tools/unicode.html转义,登入。
在这里插入图片描述

web28

看到了2.txt就想到改数字,改了以后url就一直在变化加一些0101,访问不进去,所以选择burp来爆破目录,暴力破解目录/0-100/0-100/看返回数据包
如果不去掉2.txt还是没有回显的,所以爆破的时候记得去掉2.txt,这里我测试了一下burp发现就算爆破出来,但是这个数字很难找,所以我们直接用python脚本。

import requests

for i in range(0,100):
     for j in range(0,100):
        payload = f"http://063829fe-41fe-4d08-9fd5-1f023a475b75.challenge.ctf.show:8080/72/20/"
        result = requests.get(payload)
        if "ctfshow" in result.text:
            print(result.text)
            exit()

在这里插入图片描述
flag立马就出来了。

猜你喜欢

转载自blog.csdn.net/qq_45951598/article/details/114646433