一次CTF杂项题目练习,从零基础到精通,收藏这篇就够了!

2025-09-22 19:44:55

解压缩?先过"摩斯密码"这关再说!

拿到一个压缩包,常规操作:先解压。结果?密码伺候!这年头,CTF也玩起"扫码支付"前的"输密码"环节了?定睛一看,密码藏在注释里。

好家伙,摩斯密码!

直接上CyberChef,一顿操作猛如虎…

解出来一串玩意儿:-- .... .. - . .--. .- ..... ..... .-- -----.-. -..,再用CyberChef“翻译”一下。

"白"的让人怀疑人生:像素级侦探的自我修养

解压后,得到一张“纯白”的PNG图片?等等,CTF出题人会这么好心?直觉告诉我,事情没那么简单。

常规套路先走一遍:01editor、strings、zsteg…一无所获。难道真的就是一张白纸?我不信!

既然是纯白,那就较真一下,看看RGB值是不是真的是(255, 255, 255)。直接上脚本,"揪出"那些"不纯洁"的像素点!

from PIL import Image

import sys

def print_nonwhite_pixels(image_path):

try:

img = Image.open(image_path)

except FileNotFoundError:

print(f"错误:文件 '{image_path}' 未找到")

return

except Exception as e:

print(f"打开图片时发生错误: {e}")

return

width, height = img.size

# 转换为RGB模式确保颜色通道一致性

if img.mode != 'RGB':

img = img.convert('RGB')

pixels = img.load()

white = (255, 255, 255)

print(f"图片尺寸: {width}x{height}")

print(f"颜色模式: {img.mode}")

print("非白色像素列表:")

# 遍历并筛选非白色像素

for y in range(height):

for x in range(width):

pixel = pixels[x, y]

if pixel != white:

print(f"坐标({x}, {y}): {pixel}")

if __name__ == "__main__":

if len(sys.argv) != 2:

print("使用方法: python find_nonwhite.py <图片路径>")

print("示例: python find_nonwhite.py image.jpg")

else:

print_nonwhite_pixels(sys.argv[1])

print("

处理完成(白色像素已被过滤)")

跑一下脚本,果然,有"猫腻"!

像素点(21, 21)竟然是(245, 245, 245),这…简直是"白色恐怖"!

“黑白"显形:让隐藏的二维码"重见天日”

既然找到了非白色像素,那就把它们提取出来,看看能搞出什么幺蛾子。

from PIL import Image

import numpy as np

# 打开原始图片

img = Image.open('white.png')

width, height = img.size

print(f"原始图片尺寸: {width}x{height}")

# 创建一个布尔数组来表示非白色像素

pattern = np.zeros((height, width), dtype=bool)

# 标记所有非白色像素

for y in range(height):

for x in range(width):

pixel = img.getpixel((x, y))

if isinstance(pixel, tuple):

# 对于RGB图片,如果任何通道小于255,则标记为非白色

if any(value < 255 for value in pixel):

pattern[y, x] = True

else:

# 对于灰度图,如果值小于255,则标记为非白色

if pixel < 255:

pattern[y, x] = True

# 保存非白色像素的坐标

non_white_pixels = []

for y in range(height):

for x in range(width):

if pattern[y, x]:

non_white_pixels.append((x, y))

# 计算非白色像素的边界框

min_x = min(x for x, y in non_white_pixels)

max_x = max(x for x, y in non_white_pixels)

min_y = min(y for x, y in non_white_pixels)

max_y = max(y for x, y in non_white_pixels)

print(f"边界框: ({min_x}, {min_y}) 到 ({max_x}, {max_y})")

box_width = max_x - min_x + 1

box_height = max_y - min_y + 1

print(f"边界框尺寸: {box_width}x{box_height}")

# 在边界框尺寸基础上添加边距

margin = 20

qr_width = box_width + 2 * margin

qr_height = box_height + 2 * margin

# 创建一个新的黑白图像

qr_img = Image.new('RGB', (qr_width, qr_height), color='white')

qr_pixels = qr_img.load()

# 将非白色像素映射到新图像,设为黑色

for x, y in non_white_pixels:

# 计算在新图像中的位置(添加边距)

new_x = x - min_x + margin

new_y = y - min_y + margin

# 确保坐标在新图像范围内

if 0 <= new_x < qr_width and 0 <= new_y < qr_height:

qr_pixels[new_x, new_y] = (0, 0, 0) # 黑色

scale_factor = 4

large_qr = Image.new('RGB', (qr_width * scale_factor, qr_height * scale_factor), color='white')

large_pixels = large_qr.load()

# 将每个像素放大

for y in range(qr_height):

for x in range(qr_width):

pixel = qr_pixels[x, y]

for dy in range(scale_factor):

for dx in range(scale_factor):

large_pixels[x * scale_factor + dx, y * scale_factor + dy] = pixel

# 保存QR码图像

qr_filename = 'restored.png'

large_qr.save(qr_filename)

print(f"已保存图像到 {qr_filename}")

# 显示一些统计信息

print(f"非白色像素总数: {len(non_white_pixels)}")

运行脚本,见证奇迹的时刻到了!

一个隐藏的二维码就这样被"揪"了出来,扫码,flag到手!

这次CTF题目,让我深刻体会到:眼见不一定为实,尤其是在"白纸黑字"的网络世界里,更要保持一颗怀疑的心,用像素级的侦探精神,去发现那些隐藏在"纯洁"外表下的"秘密"。

黑客/网络安全学习路线

今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。

网络安全学习资源分享:

下面给大家分享一份2025最新版的网络安全学习路线资料,帮助新人小白更系统、更快速的学习黑客技术!

一、2025最新网络安全学习路线

一个明确的学习路线可以帮助新人了解从哪里开始,按照什么顺序学习,以及需要掌握哪些知识点。

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享 (安全链接,放心点击)

我们把学习路线分成L1到L4四个阶段,一步步带你从入门到进阶,从理论到实战。

L1级别:网络安全的基础入门

L1阶段:我们会去了解计算机网络的基础知识,以及网络安全在行业的应用和分析;学习理解安全基础的核心原理,关键技术,以及PHP编程基础;通过证书考试,可以获得NISP/CISP。可就业安全运维工程师、等保测评工程师。

L2级别:网络安全的技术进阶

L2阶段我们会去学习渗透测试:包括情报收集、弱口令与口令爆破以及各大类型漏洞,还有漏洞挖掘和安全检查项目,可参加CISP-PTE证书考试。

L3级别:网络安全的高阶提升

L3阶段:我们会去学习反序列漏洞、RCE漏洞,也会学习到内网渗透实战、靶场实战和技术提取技术,系统学习Python编程和实战。参加CISP-PTE考试。

L4级别:网络安全的项目实战

L4阶段:我们会更加深入进行实战训练,包括代码审计、应急响应、红蓝对抗以及SRC的挖掘技术。并学习CTF夺旗赛的要点和刷题

整个网络安全学习路线L1主要是对计算机网络安全的理论基础的一个学习掌握;而L3 L4更多的是通过项目实战来掌握核心技术,针对以上网安的学习路线我们也整理了对应的学习视频教程,和配套的学习资料。

二、技术文档和经典PDF书籍

书籍和学习文档资料是学习网络安全过程中必不可少的,我自己整理技术文档,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,(书籍含电子版PDF)

三、网络安全视频教程

对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的网安视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识。

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

四、网络安全护网行动/CTF比赛

学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。

五、网络安全工具包、面试题和源码

“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。 

面试不仅是技术的较量,更需要充分的准备。

在你已经掌握了技术之后,就需要开始准备面试,我们将提供精心整理的网安面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。

如果你是要找网安方面的工作,它们绝对能帮你大忙。

这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。

参考解析:深信服官网、奇安信官网、Freebuf、csdn等

内容特点:条理清晰,含图像化表示更加易懂。

内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…

**读者福利 |** CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享 (安全链接,放心点击)

前端开发必备!30+优质组件库全推荐
《七月·《诗经·豳风》》原文与赏析