CTF-WriteUp
  • 😅Introduction
  • 🥵Friend
  • 2015
    • 2015 RCTF
      • EasySQL
  • 2016
    • 2016 0CTF
      • piapiapia
  • 2018
    • 2018 网鼎杯
      • Fakebook
      • Comment
    • 2018 BUUCTF
      • Online
    • 2018 WesternCTF
      • shrine
    • 2018 SWPUCTF
      • SimplePHP
    • 2018 HCTF
      • Hideandseek
      • WarmUp
    • 2018 SUCTF
      • GetShell
  • 2019
    • 2019 AuroraCTF
      • Check In
      • Welcome to Aurora
      • ez LFI
      • ssti
    • 2019 Hackergame
      • 签到题
      • 信息安全 2077
      • 达拉崩吧大冒险
      • 网页读取器
    • 2019 RoarCTF
      • Easy Calc
    • 2019 极客大挑战
      • Secret File
      • LoveSQL
      • Knife
      • PHP
      • Http
      • Upload
      • BuyFlag
      • BabySQL
      • FinalSQL
      • RCE ME
      • EasySQL
      • HardSQL
    • 2019 SUCTF
      • check in
      • EasyWeb
      • EasySQL
    • 2019 ZJCTF
      • NiZhuanSiWei
    • 2019 CISCN
      • [华北赛区]Hack World
      • [华北赛区]ikun
      • [华东南赛区]Web11
      • [华北赛区]Dropbox
      • [总决赛]Easyweb
      • [初赛]Love Math
      • [华北赛区]CyberPunk
      • [华东南赛区]Double Secret
    • 2019 强网杯
      • 高明的黑客
      • 随便注
    • 2019 GXYCTF
      • 禁止套娃
      • BabyUpload
      • Ping Ping Ping
      • BabySQli
    • 2019 安洵杯
      • easy_web
      • easy_serialize_php
    • 2019 De1CTF
      • SSRF Me
    • 2019 ASIS
      • Unicorn shop
    • 2019 GWCTF
      • 我有一个数据库
      • 枯燥的抽奖
    • 2019 PwnThyBytes
      • Baby_SQL
    • 2019 BSidesCF
      • Kookie
      • Sequel
    • 2019 FBCTF
      • RCEService
    • 2019 CSCCTF
      • FlaskLight
    • 2019 HarekazeCTF
      • encode_and_encode
    • 2019 SWPU
      • Web1
    • 2019 RootersCTF
      • I_<3_Flask
    • 2019 NCTF
      • SQLi
  • 2020
    • 2020 CTFShow 36D杯
      • 签到
      • rsaEZ
      • justShow
    • 2020 GKCTF
      • Check_In
      • cve版签到
      • 老八小超市儿
    • 2020 CISCN
      • easyphp
      • easytrick
      • rceme
      • babyunserialize
      • littlegame
    • 2020 羊城杯
      • easycon
      • BlackCat
      • easyphp
    • 2020 ACTF
      • Include
      • BackupFile
      • Exec
    • 2020 CTFShow 月饼杯
      • 此夜圆
      • 故人心
      • 莫负婵娟
    • 2020 西湖论剑
      • easyjson
      • newupload
    • 2020 CTFShow 1024杯
      • fastapi
    • 2020 太湖杯
      • checkInGame
      • easyWeb
      • ezMd5
      • CrossFire
    • 2020 ByteCTF
      • Check-In
    • 2020 BJDCTF
      • Easy MD5
      • The mystery of ip
      • ZJCTF,不过如此
      • 假猪套天下第一
      • 简单注入
      • EasySearch
      • EzPHP
    • 2020 网鼎杯
      • [朱雀组]Think Java
      • [青龙组]filejava
      • [青龙组]AreUSerialz
      • [朱雀组]phpweb
      • [白虎组]PicDown
      • [朱雀组]Nmap
    • 2020 MRCTF
      • 你传你🐎呢
      • Ez_bypass
      • PYWebsite
      • Ezpop
      • 套娃
    • 2020 GYCTF
      • Blacklist
      • FlaskApp
      • Ezsqli
    • 2020 BJDCTF
      • old-hack
    • 2020 WUSTCTF
      • 朴实无华
      • 颜值成绩查询
      • CV Maker
    • 2020 NPUCTF
      • ReadlezPHP
      • ezinclude
    • 2020 Zer0pts
      • Can you guess it?
    • 2020 HFCTF
      • EasyLogin
  • 2021
    • 2021 CTFShow DJBCTF
      • veryphp
      • 虎山行
      • spaceman
    • 2021 CISCN
      • easy_sql
      • easy_source
      • middle_source
      • Upload
      • filter
    • 2021 强网杯
      • pop_master
      • Hard_Penetration
      • 寻宝
    • 2021 羊城杯
      • checkin_go
      • Only 4
      • EasyCurl
    • 2021 红明谷
      • JavaWeb
      • write_shell
  • 2022
    • 2022 RealWorld CTF 4th
      • Hack into Skynet
      • RWDN
    • 2022 强网杯
      • babyweb
      • crash
      • easyweb
      • rcefile
      • uploadpro
      • WP-UM
    • 2022 NewStarCTF
      • WEEK1-WEEK2
      • [WEEK3]Maybe You Have To think More
      • [WEEK3]IncludeTwo
      • [WEEK3]BabySSTI_One
      • [WEEK3]multiSQL
      • [WEEK4]BabySSTI_Two
      • [WEEK4]So Baby RCE
      • [WEEK4]UnserializeThree
      • [WEEK4]ROME
      • [WEEK5]Give me your photo PLZ
      • [WEEK5]So Baby RCE Again
      • [WEEK5]BabySSTI_Three
      • [WEEK5]Unsafe Apache
  • 2023
    • HGAME
      • WEEK1
        • Classic Childhood Game
  • 靶场
    • 攻防世界
      • view_source
      • robots
      • backup
      • Cookie
      • disabled_button
      • weak_auth
      • simple_php
      • get_post
      • xff_referer
      • webshell
      • command_execution
      • simple_js
      • Training-WWW-Robots
      • baby_web
      • php_rce
      • PHP2
      • NaNNaNNaNNaN-Batman
    • CTFHub
      • Cookie
      • 请求方式
      • 302跳转
      • 基础认证
      • 响应包源代码
      • 默认口令
    • CTFShow
      • 信息收集
      • 爆破
      • 命令执行
      • thinkphp专题
    • N1BOOK
      • WEB入门
      • WEB进阶1
      • Web进阶2
    • Upload-Labs
    • SQL-Labs
Powered by GitBook
On this page
  • web21
  • web22
  • web23
  • web24
  • web25
  • web26
  • web27
  • web28
  1. 靶场
  2. CTFShow

爆破

web21

题目给了压缩包,结合提示应该是爆破题目。

随机输入值,抓包后发现 Authorization 参数为用户名:密码格式的base64编码后的字符串,将 Payload type 设置为 Custom iterator,设置好三个Position,加密方式为 base64,取消掉提交的转义。

web22

直接盲猜 flag.ctfer.com 就没爆破了

web23

题目提示了爆破,写个脚本爆破,由于不知道几位数,先从两位数试,运气好就出了:

<?php
error_reporting(0);

$string = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';


for ($i1 = 0; $i1 < 62; $i1++) {
    for ($i2 = 0; $i2 < 62; $i2++) {
        $exp = $string[$i1] . $string[$i2];
        $token = md5($exp);
        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 $exp . "\n";
                echo 'flag';
            }
        }
    }
}

直接出了两个,解还是挺多的。

web24

利用到了伪随机数的特性,在种子确定时,随机数的值是确定的。

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

payload:

?r=1155388967

web25

上源码:

<?php

/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date:   2020-09-03 13:56:57
# @Last Modified by:   h1xa
# @Last Modified time: 2020-09-03 15:47:33
# @email: h1xa@ctfer.com
# @link: https://ctfer.com

*/


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,求出第一次mt_rand()值(由于flag随机,每次容器启动,答案都是不一样的)

-1504369762

提交 r=628900174 ,就可以绕过第一个过滤了。

接下来要求出在这个seed下再算出两次mt_rand(),种子是flag md5加密后的前八位,写个垃圾脚本爆破:

<?php
$string = "0123456789abcdef";
$exp = 0;

for ($i1 = 0; $i1 < 16; $i1++) {
    for ($i2 = 0; $i2 < 16; $i2++) {
        for ($i3 = 0; $i3 < 16; $i3++) {
            for ($i4 = 0; $i4 < 16; $i4++) {
                echo $exp . "\n";
                for ($i5 = 0; $i5 < 16; $i5++) {
                    for ($i6 = 0; $i6 < 16; $i6++) {
                        for ($i7 = 0; $i7 < 16; $i7++) {
                            for ($i8 = 0; $i8 < 16; $i8++) {
                                $exp = $string[$i1] . $string[$i2] . $string[$i3] . $string[$i4] . $string[$i5] . $string[$i6] . $string[$i7] . $string[$i8];
                                mt_srand(hexdec($exp));
                                if (mt_rand() == 1504369762) {
                                    echo 'answer is ' . $exp;
                                    exit();
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}

脚本写的很垃圾,跑的也很久,因为不知道PHP多线程怎么写,于是写了四个exp,$i1的初始值分别设成0/4/8/12,算是缩短了四倍的时间,最后出了seed。

然后跑出token值提交就行

web26

查看源码有个check()函数:

function check() {
        $.ajax({
            url: 'checkdb.php',
            type: 'POST',
            dataType: 'json',
            data: {
                'a': $('#a').val(),
                'p': $('#p').val(),
                'd': $('#d').val(),
                'u': $('#u').val(),
                'pass': $('#pass').val()
            },
            success: function (data) {
                alert(data['msg']);
            },
            error: function (data) {
                alert(data['msg']);
            }

        });
    }

尝试POST后返回json文件,抓包既得。

web27

进来是ZFsoft正方教务系统,起先想的是这个系统的登录有没有弱密码,后来没有找到后台,发现POST参数提交的时候没有用户的类型,且没有找到root的默认密码,就没有搞这个洞。

然后发现录取名单是可以下载的。下载下来的名单有八位打码:

然后有个学员录取查询系统,输入学生的身份证和姓名,结合刚才的表格,推测这里需要爆破。

身份证打码的位置比较微妙,是身份证的年月日,使得爆破难度大幅度下降,本来是十的八次方,现在只要一万多次。爆一下这位高先伊同学的身份证。

由于生日就在1990,所以很快就出了。

提交之后给了初始密码和用户名,直接登录就拿到flag了。

web28

略

Previous信息收集Next命令执行

Last updated 2 years ago