一:CTF题型介绍,Web、逆向题型深度分析。
二:PWN与隐写类题型分析,AWD与靶场渗透。
三:业务系统渗透测试攻防实操,跨站入侵分析,系统权限提权、后门网站入侵、网站挂马和脱库攻防对抗实践。
ctf比赛背景:夺旗赛
五个类型:web awd ;逆向 密码攻击 二进制 安全杂项
比赛类型
1. web -适合入门
2. Pwn
Pwn类题目重点考察选手对于二进制漏洞的挖掘和利用能力,其考点也通常在堆栈溢出、格式化漏洞、UAF、Double 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类题目考察选手对密码学相关知识的了解程度,诸如RSA、AES、DES等都是密码学题目的常客。有些时候也会给出一个加密脚本和密文,根据加密流程逆推出明文。
5. Misc
Misc意为杂项,即不包含在以上分类的题目都会放到这个分类。题目会给出一个附件。选手下载该附件进行分析,最终得出flag
常见的题型有图片隐写、视频隐写、文档隐写、流量分析、协议分析、游戏、IoT相关等等。五花八门,种类繁多。
! 常用工具及网站
-
==强烈安利==: 随波逐流:www.1o1o.xyz/ :里面有很多工具和练习平台可以选择
-
gpt4o镜像: cat.chatavx.com/#/login
-
微软应用商店加速器watt toolkit 合法 store搜索
-
工具准备: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
-
ip查询:curl cip.cc
flag搜索变形-转码(base64编码) 改写字母 增加空格
改密码 不运行root 备份
word左侧经验 -粘过来
-
刷题 ctfhub - www.ctfhub.com/#/index
账号ctf2024 密码CTFctf!xxx
刷题找flag找到写在这代表成功
我踩了一个坑就是每次都写flag={{}},实际上结果是可以直接写flag的value值的 不是固定格式
入门
-
纸质书:白帽子讲网络安全
-
环境: ①虚拟机里面搞CTFOS
②burbsuite 抓包 自动编码ctf大概率是错的
③sqlmap sql注入
④f12 console直接运行js
例题-sql注入
-
联合查询
-
报错update
-
盲注
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:
-
拿到账号第一件事情:改密码 要不然直接攻破了!!
-
有管理员密码 加密破解不了 如何拿到flag-> 已知钥匙破解不了-把密码改了
-
flag隐藏方式有很多 注意甄别和寻找 -虚拟机上面提前准备好各种隐写工具 抓包工具等