初识ctf五种题型及练习网站-另附烟雾弹经验

308 阅读8分钟

一:CTF题型介绍,Web、逆向题型深度分析。

二:PWN与隐写类题型分析,AWD与靶场渗透。

三:业务系统渗透测试攻防实操,跨站入侵分析,系统权限提权、后门网站入侵、网站挂马和脱库攻防对抗实践。

ctf比赛背景:夺旗赛

五个类型:web awd ;逆向 密码攻击 二进制 安全杂项

比赛类型

1. web -适合入门

2. Pwn

Pwn类题目重点考察选手对于二进制漏洞的挖掘和利用能力,其考点也通常在堆栈溢出格式化漏洞UAFDouble Free等常见二进制漏洞上。选手需要根据题目中给出的二进制可执行文件进行逆向分析,找出其中的漏洞并进行利用,编写对应的漏洞攻击脚本(Exploit),进而对主办方给出的远程服务器进行攻击并获取flag通常来说Pwn类题目给出的远程服务器信息为nc IP_ADDRESS PORT,例如nc 1.2.3.4 4567这种形式,表示在1.2.3.4这个IP的4567端口上运行了该题目

pwntools库

3. Reverse

Re类题目考察选手逆向工程能力。题目会给出一个可执行二进制文件,有些时候也可能是Android的APK安装包。选手需要逆向给出的程序,分析其程序工作原理。最终根据程序行为等获得flag

4. Crypto

Crypto类题目考察选手对密码学相关知识的了解程度,诸如RSAAESDES等都是密码学题目的常客。有些时候也会给出一个加密脚本和密文,根据加密流程逆推出明文。

5. Misc

Misc意为杂项,即不包含在以上分类的题目都会放到这个分类。题目会给出一个附件。选手下载该附件进行分析,最终得出flag

常见的题型有图片隐写、视频隐写、文档隐写、流量分析、协议分析、游戏、IoT相关等等。五花八门,种类繁多。

! 常用工具及网站

  1. ==强烈安利==: 随波逐流:www.1o1o.xyz/ :里面有很多工具和练习平台可以选择

  2. gpt4o镜像: cat.chatavx.com/#/login

  3. 微软应用商店加速器watt toolkit 合法 store搜索

  4. 工具准备:zhuanlan.zhihu.com/p/557642904

    临时邮箱:www.amz123.com/tools-mail

    随波逐流:www.1o1o.xyz/

    代码审计工具:Fortify

    sql注入实验环境练习:sqlilab,dvwa -2d;利用bp做web攻防

    虚拟机存快照

    ctf练习:www.ctfhub.com/#/skilltree

    mindManager-类xmind

  5. ip查询:curl cip.cc

    flag搜索变形-转码(base64编码) 改写字母 增加空格

    改密码 不运行root 备份

    word左侧经验 -粘过来

  6. 刷题 ctfhub - www.ctfhub.com/#/index

    账号ctf2024 密码CTFctf!xxx

    刷题找flag找到写在这代表成功

    我踩了一个坑就是每次都写flag={{}},实际上结果是可以直接写flag的value值的 不是固定格式

    入门

    image-20241111104708125

  7. 纸质书:白帽子讲网络安全

  8. 环境: ①虚拟机里面搞CTFOS

    ②burbsuite 抓包 自动编码ctf大概率是错的

image-20241009141527650

③sqlmap sql注入

④f12 console直接运行js

例题-sql注入

  1. 联合查询

  2. 报错update

  3. 盲注

    and 1=1

    and '1'='1->'and '1'='1'

注入点:输入表单查看注入点

flag烟雾弹之 空白字符

在一些 SQL注入(SQL Injection) 或 CTF题目 中,出题者为了增加挑战,可能会对输入进行过滤。例如,他们可能会过滤掉 空格,这是为了防止用户直接输入标准SQL语句,如 SELECT * FROM users,因为这些SQL语句通常需要空格来分隔关键字(如 SELECT 和 FROM)。

然而,在SQL标准中,除了常规的空格(space,即十六进制的 0x20)外,还有许多其他字符被视为 空白字符,它们也可以在SQL查询中起到与空格类似的作用。这些字符不会被直接识别为普通的空格,但它们在SQL解析时可以代替空格来分隔关键词。

通过利用这些替代的空白字符,攻击者可以绕过对常规空格的过滤,从而成功执行SQL注入。

什么是空白字符?

空白字符(Whitespace characters)是指在文本中用于分隔内容但不显示实际符号的字符。除了常规的空格之外,还有许多不同的空白字符,它们在不同的数据库中可能都被视为空格的替代品。

数据库中的常见空白字符(以十六进制表示):

不同的数据库支持不同的空白字符,这里列举了几种常见的数据库及其可以使用的空白字符。


SQLite3* *:**SQLite3 中:

· 支持的空白字符包括:0A, 0D, 0C, 09, 20

· 这些对应的ASCII字符分别为:

o 0A:换行符(Line Feed, LF)

o 0D:回车符(Carriage Return, CR)0D:回车符(Carriage Return, CR)

o 0C:换页符(Form Feed, FF)

o 09:制表符(Tab)

o 20:普通空格(Space)

在SQLite3中,除了普通空格外,换行、回车、制表等字符也可以充当空格的角色。也就是说,如果过滤了空格字符 0x20,我们可以用这些其他字符来替代,从而绕过过滤。


MySQL5* *:**MySQL5 的:

· 支持的空白字符有:09, 0A, 0B, 0C, 0D, A0, 20

· 这些对应的ASCII字符分别为:

o 09:制表符(Tab)

o 0A:换行符(Line Feed, LF)

o 0B:垂直制表符(Vertical Tab, VT)

o 0C:换页符(Form Feed, FF)

o 0D:回车符(Carriage Return, CR)0D:回车符(Carriage Return, CR)

o A0:不换行空格(Non-Breaking Space, NBSP)A0:不换行空格(Non-breaking Space, NBSP)

o 20:普通空格(Space)

MySQL5支持更多的空白字符,除了常见的制表符、换行符和回车符外,还包括不换行空格(0xA0)。因此,在MySQL中,可以使用更丰富的字符集来绕过空格过滤。


PostgreSQL* PostgreSQL的:*

· 支持的空白字符包括:0A, 0D, 0C, 09, 20

· 这些对应的ASCII字符与SQLite3中的一致:

o 0A:换行符(Line Feed, LF)

o 0D:回车符(Carriage Return, CR)0D:回车符(Carriage Return, CR)

o 0C:换页符(Form Feed, FF)

o 09:制表符(Tab)

o 20:普通空格(Space)

PostgreSQL的空白字符与SQLite3的非常相似,也可以通过使用这些字符代替空格来绕过过滤。


Oracle 11g* *

· 支持的空白字符包括:00, 0A, 0D, 0C, 09, 20

· 对应的ASCII字符分别为:

o 00:空字符(Null)

o 0A:换行符(Line Feed, LF)

o 0D:回车符(Carriage Return, CR)0D:回车符(Carriage Return, CR)

o 0C:换页符(Form Feed, FF)

o 09:制表符(Tab)

o 20:普通空格(Space)

Oracle 11g比其他数据库多了一个 00(空字符),这个字符可以用来在某些情况下绕过空格过滤。


MSSQL(Microsoft SQL Server)* *:**MSSQL(Microsoft SQL Server):

· 支持的空白字符范围更广,包括:01, 02, 03, 04, 05, 06, 07, 08, 09, 0A, 0B, 0C, 0D, 0E, 0F, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 1A, 1B, 1C, 1D, 1E, 1F, 20

· 这些字符包括所有的 控制字符(Control characters),例如:

o 09:制表符(Tab)

o 0A:换行符(Line Feed, LF)

o 0B:垂直制表符(Vertical Tab, VT)

o 0D:回车符(Carriage Return, CR)0D:回车符(Carriage Return, CR)

o 1F:信息分隔符(Information Separator, IS)1F:信息分隔符(Information separator, IS)

MSSQL支持的空白字符最为广泛,几乎包括了所有的控制字符(0x01 到 0x1F 的范围),这使得在MSSQL中有更多的方式来绕过空格过滤。


总结:

通过了解不同数据库支持的空白字符,你可以根据具体的过滤情况选择合适的字符来替代空格,绕过对空格的过滤。例如,如果在CTF题目中空格被过滤掉了,但使用的数据库是MySQL,你可以用 0x09(制表符)或 0xA0(不换行空格)来代替空格,从而实现SQL注入。

这些技术在CTF挑战中非常实用,尤其是在SQL注入相关题目中,能帮助你绕过一些常见的过滤机制并执行你的攻击语句。

经验tip:

  1. 拿到账号第一件事情:改密码 要不然直接攻破了!!

  2. 有管理员密码 加密破解不了 如何拿到flag-> 已知钥匙破解不了-把密码改了

  3. flag隐藏方式有很多 注意甄别和寻找 -虚拟机上面提前准备好各种隐写工具 抓包工具等