CTF概念
CTF是Capture The Flag的缩写,中文一般译作夺旗赛
CTF起源于1996年DEFCON全球黑客大会
DEFCONCTF是全球技术水平和影响力最高的CTF竞赛
竞赛模式
解题模式:解决网络安全技术挑战(即找到flag),提交后获取相应分值。
攻防赛模式:要求找到其他队伍的薄弱环节进行攻击,同时对自己的靶机环境进行加固防守。
战争分享模式:由参赛队伍相互出题挑战。
竞赛内容
1.WEB:网络攻防
2.Reverse:逆向工程
3.PWN:二进制漏洞
4.Crypto: 密码学
5.Mobile: 移动安全
6.Misc:安全杂项
Burp Suite工具
使用Java编写的一个用于测试网络应用程序安全性的图形化工具。
主要功能
1.拦截、查看或者修改网络请求和响应
2.扫描web应用程序的安全漏洞。
3.自动化攻击web应用
4.对数据编码和解码
Webshell管理工具
蚁剑:网站管理工具,面向于渗透测试安全人员以及网站管理员
冰蝎:通信过程中使用AES加密
哥斯拉:替代工具。
考点1:PHP弱类型
弱类型简单来说就是数据类型可以被忽视的语言,同一变量在不同类型中是不同的值。
CTF比赛中需要掌握
1.理解= =和= = =的区别
2.MD5验证绕过方法
比如下面的admin=0是true 'admin’是一个字符型他和整型0作比较 那么’admin’转化为整形的值是0
"1admin"字符串转化为整型为前面的值1
"admin1"字符串转化为整型为前面的值0
考点2: SQL注入
SQL注入是将Web页面的原URL、表单域或数据包输入的参数 修改拼接成SQL语句,传递给Web服务器,进而传给数据库服务器以执行数据库命令。
CTF比赛中需要掌握:
1.联合查询注入
select username from users where id=“$id” 这个是正确的语句
select username from users where id=“-1” 前面为正确语句
union select password from users #" union是把多重查询的结果合并起来 而后面又是一个语句 #是把后面多余的“注释掉
这样子我们就可以得到id为-1的username和users表中字段password的数据
2.报错注入
和联合查询的区别是 联合查询是给出我们数据 而报错注入只会有正确和错误的信息
3.盲注
这个的话如果是报错的话不会显示具体信息 一般通过布尔盲注和时间盲注来判断
4.宽字节注入
5.二次注入
考点3: 文件上传
文件上传漏洞:上传文件的时候,服务器后端未对上传的文件进行严格的验证和过滤,造成上传恶意文件的情况
CTF比赛中需要掌握:
1.客户端检测绕过方式
2.MIME类型检测绕过方式
3.文件后缀检测绕过方式
4.文件内容检测绕过方式
考点4: 文件包含
文件包含漏洞:客户端用户输入控制动态包含在服务器端的文件,会导致恶意代码的执行及敏感信息泄露,主要包括本地文件包含和远程文件包含两种形式。
CTF比赛中需要掌握:
1.文件包含的函数
2.读取敏感文件
3.获取服务器权限
考点5: 远程命令执行
当用户可以控制命令执行函数中的参数时,就可以注入恶意命令到正常命令中,造成命令
执行攻击。
CTF比赛中需要掌握:
1.PHP等语言中常见的系统命令执行函数
2.命令拼接方法
3.绕过过滤机制
考点6:服务端请求伪造
简称SSRF,是一种由攻击者构造形成由服务器端发起请求的一个漏洞CTF比赛中需要掌握:
1.SSRF的利用技巧5
2.SSRF攻击mysq
3.SSRF攻击redis
考点7: 跨站脚本攻击
简称XSS,是指恶意攻击者往Web页面里插入恶意代码,当其他用户浏览该页之时,嵌入其中Web页面的JavaScript代码会被执行,从而达到恶意攻击用户的目的。
CTF比赛中需要掌握:
1.XSS漏洞的类型和利用方法
2.绕过“内容安全策略
考点8: XML外部实体注入
简称XXE,是在对非安全的外部实体数据进行处理时引发的安全问题CTF比赛中需要掌握
1.XML基础知识
2.绕过过滤机制,实现漏洞利用
考点9: Nodejs
发布于2009年5月,是一个基于Chrome V8引擎的JavaScript运行环境,让JavaScript 运行在服务端的开发平台,成为类似于PHP的后端语言。CTF比赛中需要掌握
1.JavaScript基本语法
2.类型污染
3.原型链污染
考点10: 反序列化
序列化:就是把对象转化为二进制的字符串,使用serialize()函数
反序列化:把对象转化的二进制字符串再转化为对象,使用unserialize()函数
CTF比赛中需要掌握:
1.PHP反序列化漏洞原理
2.构造POP链