CTFshow web入門 (爆破)


web21

先隨便輸入賬號密碼,抓包

base64解密,可以發現賬號密碼的形式為 賬號:密碼,這里我們采用 Custom iterator進行爆破

使用方法可參考:Custom iterator的使用

爆破即可得到flag

web22

子域名爆破

flag.ctfer.com

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

}
?>

直接在源代碼上改改,寫個腳本就好了 (假設是三位的數)

<?php
error_reporting(0);
$string = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
print (strlen($string)."\n");

for ($a = 0; $a < 62; $a++) {
    for ($b = 0; $b < 62; $b++) {
        for ($c = 0; $c < 62; $c++) {
            $flag = $string[$a] . $string[$b] . $string[$c];
            $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 . "\n";
                }
            }
        }
    }
}

解出來答案很多

隨便GET傳參一個即可得到flag

web24

考察點:偽隨機數

了解偽隨機數可參考此文偽隨機數

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

GET傳參即可

web25

<?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');
}
$rand = intval($r)-intval(mt_rand());

根據這句,可以通過傳入的r得到第一個隨機數,之后我們可以通過工具php_mt_seed 地址

進行逆推,得到種子

通過抓包查看響應頭我們可以知道該php版本為7.3.11,因此可能的種子就是如圖兩種

if($_COOKIE['token']==(mt_rand()+mt_rand()))

通過該行代碼我們知道要將兩個隨機數相加,腳本如下

burp抓吧修改即可

關於這里為什么要?r=1819399594,因為

 if((!$rand)){
        if($_COOKIE['token']==(mt_rand()+mt_rand())){
            echo $flag;
        }

只有在$rand不存在時,$_COOKIE['token']==(mt_rand()+mt_rand() 才能執行,而1819399594是我們在傳?r=0時頁面輸出的隨機數

 $rand = intval($r)-intval(mt_rand());

此時的$rand = mt_rand()即第一個生成的隨機數,因此只要我們使$r=mt_rand()=1819399594,就能讓$rand=0,不存在,從而執行接下來的代碼

web26

在安裝頁面,查看源碼,可以發現js代碼

在checkdb.php頁面POST即可

web27

打開頁面是正方教務系統,仔細點看下面有個錄取名單,和 學生學籍信息查詢系統

點錄取名單,內容如下

可以看到身份證號不完全,少了生日(年月日),這里要爆破

爆破出來,學生學籍信息查詢系統 查詢之后會提示,教務系統用戶名,以及登入初始密碼為身份證

登入即可得到flag

web28

看到這個url,詭異的0和1,嘗試爆破

burpsuite爆破的四種模式

這里要把2.txt去掉

使用Cluster bomb模式爆破從0-100的數字


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM