ctfshow_blasting

ここにカタログタイトルを書く

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の2つの答えがあります

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から始まり、乱数生成器が自動的ので、そこに種付けが必要とされていないので、この機能を使用する必要がなく、シードパラメータが設定されている場合、乱数、播種します生成されるのは疑似乱数です。毎回生成される乱数は同じです。

PHPスクリプトを書く

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

実行して1155388967
を取得し、getパラメーターを介してフラグを取得します

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脆弱性疑似乱数
シードクラッカーダウンロード
ウォッチプログラムは、生成されたパラメーターからマイナス()を渡して次の決定を入力するために0に等しいmt_randを渡すことができるため、mt_rand()を爆破する必要があります。

WEB26

ここに画像の説明を挿入
burpはパケットをキャプチャし、パスワードをブラストします。

ここに画像の説明を挿入

web27

ここに画像の説明を挿入
ここにダウンロードされたファイルがあり、IDカードがあるのに、8桁の数字が欠落していることがわかりました。ここで、それを爆破できます。
ここに画像の説明を挿入
ここに画像の説明を挿入

IDカード621022199002015237を入手します。
ここに画像の説明を挿入
次にhttps://www.bt.cn/tools/unicode.htmlにアクセスして、エスケープしてログインします。
ここに画像の説明を挿入

web28

番号を変更すると思われる2.txtを参照してください。変更後、URLが変更されて0101が追加されました。アクセスが行われないため、バーストディレクトリ、ブルートディレクトリ/ 0-100 / 0-100 /パケットを返すことを選択しました。
2.txtを削除しないとエコーが発生しないので、ブラストするときは忘れずに2.txtを削除してください。ここでげっぷをテストしたところ、ブラストしても数がわかりにくいことがわかったので、直接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()

ここに画像の説明を挿入
旗はすぐに出ました。

おすすめ

転載: blog.csdn.net/qq_45951598/article/details/114646433