首页 > 其他分享 >BUUCTF:Misc 解析(十)

BUUCTF:Misc 解析(十)

时间:2024-05-26 16:01:04浏览次数:19  
标签:Web ciphertext BUUCTF 挑战 Misc flag Buuctf str 解析

前言

Buuctf Web 是一个在线安全挑战平台,旨在提高参与者对网络安全的理解和实践能力。本文将详细介绍 Buuctf Web 的特点、挑战和机遇,帮助读者更好地了解这一领域。

一、Buuctf Web 的特点

多样化的挑战场景:Buuctf Web 提供了多种挑战场景,包括 Web 漏洞利用、密码破解、CTF 夺旗等,涵盖了网络安全领域的各个方面。

高质量的学习资源:平台提供了丰富的学习资源,包括视频教程、文章、案例分析等,帮助参与者提高技能水平。

实时排名和互动交流:Buuctf Web 支持实时排名和互动交流功能,参与者可以在平台上与其他选手一起讨论问题、分享经验。

二、Buuctf Web 的挑战

技术难度高:网络安全领域涉及的知识面广泛,技术难度较高,需要参与者具备较高的技术水平和学习能力。

时间压力大:在 CTF 夺旗等挑战中,时间是非常宝贵的资源,需要在有限的时间内快速定位问题并找到解决方案。

需要团队协作:在某些挑战中,需要团队协作才能更好地完成任务,如何有效地分工和协作也是一大挑战。

三、Buuctf Web 的机遇

提高技能水平:通过参与 Buuctf Web 的挑战,参与者可以不断提高自己的技能水平,增强在网络安全领域的竞争力。

拓展人脉资源:在平台上与其他选手交流互动,可以结识志同道合的朋友,拓展人脉资源。
获得实践机会:Buuctf Web 的挑战场景都是基于真实场景设计的,参与者在挑战中可以获得宝贵的实践机会。

为未来的工作做好准备:对于那些希望在未来从事网络安全相关工作的参与者来说,参与 Buuctf Web 可以为他们未来的工作做好准备。通过参与 Buuctf Web 的挑战,他们可以了解行业最新的动态和技术趋势,提高自己的职业竞争力。

四、如何参与 Buuctf Web 的挑战?

注册账号:首先需要在 Buuctf Web 平台上注册一个账号。
选择挑战场景:根据自己的兴趣和需求选择相应的挑战场景。
学习相关知识:为了更好地完成挑战,需要提前学习相关知识,如 Web 安全、密码学等。
参与挑战:按照挑战的要求完成相应的任务,与其他选手竞争排名。
交流与分享:在平台上与其他选手交流经验、分享技巧,共同提高技术水平。

总结:Buuctf Web 作为一个在线安全挑战平台,为网络安全爱好者提供了一个学习和交流的平台。通过参与 Buuctf Web 的挑战,不仅可以提高自己的技能水平,还可以拓展人脉资源、了解行业动态并为未来的工作做好准备。希望本文的介绍能帮助读者更好地了解 Buuctf Web 的特点、挑战和机遇,为未来的发展做好准备。

一、[GXYCTF2019] SXMgdGhpcyBiYXNlPw==(Base64 解码)

题目先解码一下

点击链接下载文件

下载文件是段 Base64 编码文本

使用 Python 脚本编码拿到 flag

def get_base64_diff_value(s1, s2):
    base64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
    res = 0
    for i in xrange(len(s2)):
        if s1[i] != s2[i]:
            return abs(base64chars.index(s1[i]) - base64chars.index(s2[i]))
    return res


def solve_stego():
    with open('flag.txt', 'rb') as f:
        file_lines = f.readlines()
        bin_str = ''
        for line in file_lines:
            steg_line = line.replace('\n', '')
            norm_line = line.replace('\n', '').decode('base64').encode('base64').replace('\n', '')
            diff = get_base64_diff_value(steg_line, norm_line)
            print diff
            pads_num = steg_line.count('=')
            if diff:
                bin_str += bin(diff)[2:].zfill(pads_num * 2)
            else:
                bin_str += '0' * pads_num * 2
            print goflag(bin_str)


def goflag(bin_str):
    res_str = ''
    for i in xrange(0, len(bin_str), 8):
        res_str += chr(int(bin_str[i:i + 8], 2))
    return res_str


if __name__ == '__main__':
    solve_stego()
GXY{fazhazhenhaoting}

二、间谍启示录(Foremost 提取)

点击链接下载文件

使用 Foremost 提取文件

打开 exe 文件报错已损坏

直接看 RAR 文件,运行 flag.exe 程序生成了一个 flag.txt,这就是答案

三、喵喵喵(LSB 隐写 & Stegsolve 提取 & WinHex 修改 & CRC 爆破宽高 & 手机扫码 & WinRAR 解压缩 & NtfsStreamEditor2 导出 & pyc 反编译 & 解码)

点击链接下载文件

打开是一张图片

使用 Stegsolve 发现一丝不正常,推测为 LSB 隐写

果然找到了隐藏的 PNG 

另存后不能正常打开,在 WinHex 中发现文件头有问题,修改后可正常打开 

但是肉眼可见二维码只有一半,高度做了修改 

使用之前的 Python 脚本爆破宽高

拿到二维码

这里用 QR Research 扫不出来,但是用手机可以,最后是一个百度网盘链接

正常解压缩居然没有 flag

推测为 NTFS 数据流,使用 WinRAR 解压缩,再使用 NtfsStreamsEditor2 导出 

看到文件是 pyc 文件,去第三方网站反编译

pyc 反编译icon-default.png?t=N7T8https://tool.lu/pyc/代码如下

#!/usr/bin/env python
# visit https://tool.lu/pyc/ for more information
# Version: Python 2.7

import base64

def encode():
    flag = '*************'
    ciphertext = []
    for i in range(len(flag)):
        s = chr(i ^ ord(flag[i]))
        if i % 2 == 0:
            s = ord(s) + 10
        else:
            s = ord(s) - 10
        ciphertext.append(str(s))
    
    return ciphertext[::-1]

ciphertext = [
    '96',
    '65',
    '93',
    '123',
    '91',
    '97',
    '22',
    '93',
    '70',
    '102',
    '94',
    '132',
    '46',
    '112',
    '64',
    '97',
    '88',
    '80',
    '82',
    '137',
    '90',
    '109',
    '99',
    '112']

参考大佬脚本解码

#Author: mochu7
def decode(arg1):
	ciphertext = arg1[::-1]
	flag = ''
	for i in range(len(ciphertext)):
		if i % 2 == 0:
			s = int(ciphertext[i]) - 10
		else:
			s = int(ciphertext[i]) + 10 
		s = s ^ i
		flag += chr(s)
	print(flag)

if __name__ == '__main__':
	ciphertext = [
    '96',
    '65',
    '93',
    '123',
    '91',
    '97',
    '22',
    '93',
    '70',
    '102',
    '94',
    '132',
    '46',
    '112',
    '64',
    '97',
    '88',
    '80',
    '82',
    '137',
    '90',
    '109',
    '99',
    '112']
	decode(ciphertext)

得到 flag

flag{Y@e_Cl3veR_C1Ever!}

四、小易的 U 盘(Foremost 提取 & IDA 反编译)

点击链接下载文件

下载后是一个 ISO 文件,使用 Foremost 提取

使用 WinRAR 解压缩后找到一个 flag.txt 文件

另一个 FLAG.avi 是打不开的

只能一个一个看文件咯,最后在 autorun.inf 中找到提示

直接打开是打不开的,对于 EXE 文件只能扔进 IDA 里面反编译,最后找到 flag

标签:Web,ciphertext,BUUCTF,挑战,Misc,flag,Buuctf,str,解析
From: https://blog.csdn.net/2302_82189125/article/details/139159622

相关文章

  • BUUCTF:Crypto 解析(三)
    前言BuuctfWeb是一个在线安全挑战平台,旨在提高参与者对网络安全的理解和实践能力。本文将详细介绍BuuctfWeb的特点、挑战和机遇,帮助读者更好地了解这一领域。一、BuuctfWeb的特点多样化的挑战场景:BuuctfWeb提供了多种挑战场景,包括Web漏洞利用、密码破解、CTF夺......
  • BUUCTF-WEB(36-40)
    [BSidesCF2020]Hadabadday参考:[BUUCTF:BSidesCF2020]Hadabadday_末初的技术博客_51CTO博客[buuctf-BSidesCF2020]Hadabadday(小宇特详解)-CSDN博客应该是文件包含我这里使用;1,然后报错,我发现他是直接会加上一个.php,那我们试试伪协议读取?category=php://filter/......
  • CCF-GESP 等级考试 2024年3月认证C++一级真题解析
    2024年03月真题1单选题第1题C++表达式(3-2)*3+5的值是()。A.-13B.8C.2D.0正确答案:B.8解析:首先计算括号中的表达式(3-2),得到(1)。接下来进行乘法运算(1*3),得到(3)。最后进行加法运算(3+5),得到(8)。因此,表达式的值是(8)。第2题C++......
  • 7.2k star的万能视频解析下载插件
    今天给大家介绍一个超级厉害的浏览器插件,可以解析各个平台网页视频——猫抓。项目简介猫抓(cat-catch)是一款资源嗅探扩展插件,他能够帮助你筛选列出当前页面的资源。简单来说,当你打开任意一个带有视频的网页,猫抓就可以解析视频的真实地址,协助你下载视频。猫抓这个名字很有......
  • CSAPP(datalab)解析
    操作符的解释右移操作符>>算术右移(通常用符号>>表示)保留符号位。对于正数,算术右移和逻辑右移的效果相同,即在左边填充0。对于负数,算术右移会在左边填充1,保持符号位的1不变。对于正数5(二进制表示00000101),右移1位:00000101>>1=00000010对于负数-5(二进制补......
  • HNCTF-MISC-secret
    看到是图片,我一般会去010看看发现数据异常?kali启动发现藏了一个压缩包分离喽压缩包里面存放着flag文件打开发现没有当时就没有什么办法了然后我放在了物理机上发现有129个字符,与文本上的字符不匹配用vim打开哦呦,有隐写呦这就会联想到是零宽度字符的......
  • YOLOv8_pose训练流程-原理解析[关键点检测理论篇]
            本篇将介绍一下YOLOv8关键点检测网络的训练流程,同样在看此篇文章之前先去看一下预测流程[YOLOv8_pose预测流程-原理解析[关键点检测理论篇],还有目标检测任务的训练流程YOLOv8训练流程-原理解析[目标检测理论篇],这两篇都是前置课程,下图是YOLOv8实例分割的网络......
  • Android.mk变量解析
    前言Android.mk是Android提供的一种makefile文件,用来指定诸如编译生成so库名、引用的头文件目录、需要编译的.c/.cpp文件和.a静态库文件等。要掌握jni,就必须熟练掌握Android.mk的语法规范。LOCAL_PATH:=$(callmy-dir)一个Android.mkfile首先必须定义好LOCAL_PATH变量......
  • Spring解决循环依赖的详细解析及代码分析
    Spring框架在处理Bean的循环依赖时,主要针对单例作用域(Singleton)的Bean,并且是在通过setter方法(即基于property的依赖注入)进行依赖注入时能够解决循环依赖问题。对于构造器注入的循环依赖,Spring是无法解决的,会抛出BeanCurrentlyInCreationException异常。下面是对Spring解决......
  • 【赛题解析】【网络建设与运维】2023年全国职业院校技能大赛中职组“网络建设与运维”
    在此之前,欢迎关注波比网络波比网络官方公众号:blbinet波比网络工作室官方公众号:blbistudio技能大赛各赛项交流群:https://www.blbi.cn/threads/40/更多正式赛题源文件访问:https://www.blbi.cn获取技术支持访问:https://www.blbi.cn/form/1/selectNISP、CIPS、PTE证书可......