CTF萌新入坑指南(web篇)
ps:其实在写这篇入坑指南的时候内心还是十分挣扎的,毕竟大佬太多而我自己太太太太菜,然鹅我也不好拒绝温柔善良的郑童鞋的邀请,因此这篇文章只面向最最最新的萌新,各位大佬请自行忽略
前言
web在ctf里面占到的比重还是蛮大的,从国内有ctf赛事以来,web就一直是各
路出题人的宠儿,就比如说前段时间的某次分区赛初赛题目构成是7pwn 7web
1re 1misc,虽然在我看来这个题目分配过于偏激且离谱了,但是足以看出web
在ctf中的重要性,线下赛pwn佬可能更加关键,不过web手对于每个队伍都是不
可或缺的,总体来说基础web题的难度不是很大,但是内容很多,所以想要以
web作为主项的小伙伴一定要加倍努力奥。
准备工作
web方向的工具还是很多的,这里推荐几个常用的神器
burp suite
别问,问就是神器,用过的都说好!
(什么?不用burp?我的天哪 真有自断一臂的web选手吗)
burp 是一款web领域的跨平台工具,集成了代理、重放、暴力**、解码等等多个模块,模块之间共享http消息框架来实现共享信息,大大提高了解web题目的效率。
条件:需要预装java环境
下载地址:get到burp的途径有两种,一种是官网,官网的burp有两种版本,一个社区版一个专业版(pro),pro的功能更加强大当然也需要付费,具体费用是199还是299刀一年来着
另一种方式便是网上找资源(懂得都懂),不过有财力的小伙伴还是建议支持一下正版(反正我穷(狗头))具体的下载和**方式网上有很多很多详细的教程,这里不再赘述
sqlmap
别问,问就是sql注入神器,用过的都说好!
(这真不是忽悠,曾经精通sqlmap的人在src上仅仅用这个工具挖洞得到了6万奖金)
sqlmap是一款开源的渗透测试工具,可以自动检测并利用sql注入漏洞,配备有十分强大的检测引擎。
条件:预装python环境,官网下载即可
下载地址:官网即可 sqlmap是开源的不会收费 但是网上的其他版本可能会留有后门,保险起见官网下载,地址在下面
链接: link.
关于具体安装与环境配置,网上也有很多教程,不再赘述。
(这里多插一嘴,做sql注入不能过度依赖sqlmap,有一些比较隐蔽的报错、回显注入检测不出来还是需要手动注入的,应当在掌握理论知识的同时结合工具的使用)
kali linux
别问,问就是渗透测试神器,用过的都说好!
(俗话说,kali学得好,牢饭吃得早)
linux系统无论是在操作指令方面还是程序编写方面都有着不俗的效率,因此每位ctfer都应该有一套自己的linux虚拟机,debian,ubuntu都是不错的选择,但是对于web选手而言,我着重推荐kali,因为kali内置了一套十分完整的渗透工具,包括我们先前提到的sqlmap,burp社区版,nmap,wireshark等等,一键集成,方便快捷!
条件:vmware kali镜像文件(.iso)
简单说,vmware是一个提供虚拟机安装测试环境的软件,而镜像文件就相当于你要安装的系统,将镜像文件安装并配置到vm中就得到了一台虚拟机
教程,网上有很多详细的,不再多说
以上三款工具,如果实在有小伙伴的安装与配置出现问题一直无法解决,欢迎与我联系
web整体框架
web安全方向的题都有哪些类型呢?简单拉个框架介绍一下
- web
- sql注入
- 回显注入
- 报错注入
- 盲注
- xss跨站脚本攻击
- 反射型
- 存储型
- DOM
- csrf跨站请求伪造
- 文件相关
- 文件包含漏洞
- 文件上传
- 文件下载
- php相关
- php反序列化
- XXE
- SSRF
- 其他
- 暴力**
- url重定向
- sql注入
简述具体内容
后续会持续完善
一些例题的思路与知识拓展
后续会持续完善
篇幅实在有限,就不对具体知识进行讲解了,不过尽量把wp写详细一些
get传参与正则表达式
JLUCTF 2020 热身赛
首先简单看一下代码,得到两个信息,首先s的传入方式是get型,其次这段代码实际上是对pattern与subject进行匹配,匹配成功输出flag。而pattern看格式/^…$ /明显是正则表达式,也就是说当subject符合正则pattern的要求的时候,就会输出flag。
分析一下正则的几个位置:
\s 空白字符
\d 数字
{2,3} 大括号内表示长度,即2位或3位
\ / 这里有一点绕 前面的 \ 表示转义符 简单做一下说明:有些字符比如 / $ 等,在正则中是有实际意义的参数,同时也可以作为字符,如何区分这两者呢?约定在字符前面加上一个转义字符 \ ,以此来表示需要匹配的是字符
所以这个 \ / 的意思是匹配字符 /
[a-z] 任意一个小写字母
(.+) 匹配括号 ()
^ 为开始标志 $ 为结束标志
因此需要在字符串
theflag1之间需要加入 空格 2-3位数字 / 任意字母 / () 并且将位置对应
而get传参的基本方式就是在url后面加 /?id=
因此这道题的payload为 /?s=the flag234/a/()1
知识拓展:
1.get与post 两种传参方式 建议百度或csdn
2.正则表达式 建议看菜鸟教程
重定向
JLUCTF 2020 热身赛
重定向本质上是网页之间的跳转
hint 说这是一个重定向的题目 打开链接看一下 url最后一级文件目录是index.php 页面中还有一个2.php的入口,一直点击下一个页面中的入口,发现在4.php下,入口的名字是5.php,而我们实际上回到了index.php。这也就意味着从index到4通过页面跳转 回到了index 从而在index与4之间形成了一个闭环,从而将5隐藏起来。所以我们有理由怀疑5.php中有我们想要的flag
这是只要不让网页进行重定向就可以了 我们打开kali 在终端使用curl指令链接到5.php curl默认是不支持重定向的,除非有-L的参数。
果然,在5.php中得到了flag
知识拓展:
- linux指令 建议搜索 linux指令集
- 重定向 csdn有很多博客 讲的很不错
上一篇: XCTF杂项
下一篇: Ajax如何实现无闪烁定时刷新页面效果