CTF萌新入坑指南(web篇)(21.6.5已更新)

图文来自Spirit现役最菜web选手k1ling

20.10.21 ——最近忙的要死,校赛被锤爆,,然后课设又要结项,那几天肝代码到很晚,累die,然后答辩,被老师安排的明明白白(还好4.0了 不然亏死),几天才缓过来,终于抽出时间来想一想写一写校赛的一些经验和教训 当时做的一塌糊涂 完全只能靠杂项得分 感觉最基本的东西很多不会或者说没有掌握精髓 现在完全不敢说自己是个web选手 还好队友比较给力搞了个crypto的一血 不至于那么丢人

(这期补充了学习平台的介绍以及入门的一些经验还有两个例题)
20.12.15 ----打完第一次线下final,除了再一次深切的体会到我与大佬之间的差距之外,也发现了自己认识不成熟的地方,所以做了一点修改

21.6.5 时隔半年我终于又来填坑了,经历了第一次渗透测试实战之后,对于web又有了一点新的理解和想法。

菜狗哭泣,各位大佬请划走吧
在这里插入图片描述

github连不上了,我又爬回了csdn

个人简介

GET /index.php HTTP/1.1
User-Agent: k1ling/1.0(@Spirit青训)
Host: girl_friend
Connection: keep-alive
X-Forwarded-For: 127.0.0.1
Content-Lenth: 38
Content-Type: html/text

a_web_player_who_don’t_has_girl_friend

前言

大部分web选手如果选择做一名安全从业者,最终归宿仍然是渗透测试。
ctf中的web更多是对技术水平的提高和知识点的积累,加以一定的实战经验,大致上可以在各种情境下都能够有应对的手段。
总的来说,前中期的web难度相对并不那么大,也正因此一支强队必然需要水平较高的web选手作为支撑,不管是ctf模式还是awd模式,web都占到了较大一部分的比例。
但是起到决定作用,一锤定音的还是pwn。
举个栗子,2021虎符
两个web一共50+pt(虽然都是很基础的题),两个pwn400pt。。。。

准备工作

web方向的工具还是很多的,这里推荐几个常用的神器

burp suite

burp 是一款web领域的跨平台工具,集成了代理、重放、暴力破解、解码等等多个模块,模块之间共享http消息框架来实现共享信息,大大提高了解web题目的效率。

条件:需要预装java环境
下载地址:get到burp的途径有两种,一种是官网,官网的burp有两种版本,一个社区版一个专业版(pro),pro的功能更加强大当然也需要付费,具体费用是199还是299刀一年来着
另一种方式便是…

sqlmap

sqlmap是一款开源的渗透测试工具,可以自动检测并利用sql注入漏洞,配备有十分强大的检测引擎。

条件:预装python环境,官网下载即可
下载地址:官网即可 sqlmap是开源的不会收费 但是网上的其他版本可能会留有后门,保险起见官网下载,地址在下面
链接: link.

关于具体安装与环境配置,网上也有很多教程,不再赘述。

(这里多插一嘴,做sql注入不能过度依赖sqlmap,而且一般来说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注入
      • 回显注入
      • 报错注入
      • 盲注
      • 堆叠注入、header注入、cookie注入等
    • xss跨站脚本攻击
      • 反射型
      • 存储型
      • DOM
    • csrf跨站请求伪造
    • 文件相关
      • 文件包含漏洞
      • 文件上传
    • php相关
      • php反序列化
      • XXE
      • SSRF
    • 命令执行
    • 其他
      • 暴力破解
      • url重定向
      • 信息搜集

关于知识的学习平台

菜鸟教程 直接搜索官网
w3school 地址是w3school.com.cn 不要搭理那个什么编程狮

csdn或者baidu 这一点拿出来说是因为很多同学入门的时候某歌用的并不多 依靠最多的就是这两个平台
就很随缘 实话说教程水平高低不一(菜的一批的典型代表:我)尤其是很多安装配置环境的文章的时效性很关键 几年的时间间隔 版本肯定会更迭 举个栗子 现在去装kali 看2017年的教程肯定不行 因为kali已经更新到2020.3了 时间上版本上不适用 而且我很不建议大家为了凑合那篇教程去找一些旧版本的资源 因为ctf一定要学当下的新技术和知识 要看最近的最新版本的教程 这一点对于纯萌新来说很关键 很多很多纯萌新就是在配置环境的时候遇到了自己最大的问题甚至有可能因此放弃 所以文章和教程一定要关注关注时效性 看新版本 起码一年以内的 不要白白在旧东西上浪费时间

当有了一定的水平之后,最合适的平台是freebuf、先知社区和github,github上能找到的资源真的很多,不管是题目的源码还是awd的docker,对真题的复现很有帮助,而刷比赛真题是相对快速的提升路径,而freebuf不用多说,详细的各种教程以及时不时来一篇出题人的亲笔真的体验感拉满,虽然看不懂,但是高考的经历告诉我,出题人和选手的视角完全不同,从出题人的角度去看待一个题目,很多疑问都会迎刃而解。

说一下大致上web的学习历程

web特点:东西巨多、服务框架类型多,需要投入较多的时间。

  • 以php入手,首先学php语法和linux基础以及基础工具的使用,从sql、文件、rce开始
  • 中期学一些python,包括python_web安全问题,例如ssti、以及request库的使用、web脚本的编写,
  • 接着可以接触一些xss、ssrf、csrf等问题
  • 贯穿其中的就是随着各种语言的学习会有对应的代码审计,后期可以去接触一些其他语言、go、rust等等,以及了解一些常见的web服务框架,比如宝塔的漏洞。

注意事项:

  • 需要记笔记、保存自己的做题记录。因为东西太多了,容易忘,留下记录便于以后学习和使用。
  • 多看源码,多学原理。web的很多洞网上都有现成的利用方式,复现不难,但是复现出来不代表你就真正学会了。多想想为什么,多学学机制和漏洞成因。

一些简单的题目

传参方式与正则表达式

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

重定向

JLUCTF 2020 热身赛
在这里插入图片描述
重定向本质上是网页之间的跳转

hint 说这是一个重定向的题目 打开链接看一下 url最后一级文件目录是index.php 页面中还有一个2.php的入口,一直点击下一个页面中的入口,发现在4.php下,入口的名字是5.php,而我们实际上回到了index.php。

为啥5没了呢 (哦 我知道了 因为5字不行!)

还隔着开团?就摁开!

实际上是从index到4通过页面跳转 回到了index 从而在index与4之间形成了一个闭环,从而将5隐藏起来。所以我们有理由怀疑5.php中有我们想要的flag

这时只要不让网页进行重定向就可以了 我们打开kali 在终端使用curl指令链接到5.php curl默认是不支持重定向的,除非有-L的参数。
curl http://59.72.109.16:33020/5.php

果然,在5.php中得到了flag

robots协议

JLUCTF Spirit2020 web1
robots协议的作用,通俗的说是告诉搜索引擎哪些内容可以在网页上被看见,哪些不可以。而为了避免url对大小写的敏感问题,通常以小写robots.txt的形式呈现,放置在根目录下。

在这里插入图片描述

打开网页一看 输入姓名和密码 好像是sql注入 但是试一下没有注入点 而且第一题的位置上应该是入门题

扫一下目录 结果有robots.txt
在这里插入图片描述
打开看看 在这里插入图片描述

disallow就是个摆设 说不让访问 但是明文都显示出来了
真~君子协议
然后访问this_is_the_hint.txt
在这里插入图片描述
阿这 全是乱码是什么鬼 但是到了这一步千万不要放弃 不然你很可能就错过了一个一血(别问我怎么知道的)
乱码 说明解码方式不对 咋办呢 换一个对的就好了
firefox右上角右键打开菜单栏 然后查看>文字编码>Unicode在这里插入图片描述
这里出题人大佬还细致的讲解了一波(dxk webyyds!)
然后下面给了用户名和密码 返回主界面登录,但是在登录的时候对密码长度有限制,应该是在前端,看一下html
表单里面在这里插入图片描述
最大长度设置了5 改长一点即可在这里插入图片描述

代码审计:hash_hmac()

JLUCTF Spirit2020 web2
先上图
在这里插入图片描述
分别以 get post request方式传入abc
get post不多说,提一嘴request,它包含的是以get post 和cookie方式传入的参数
了解一下hash_hmac()
在这里插入图片描述
放到这个题目里面
第一个函数,algo是sha256,data是a,key是啥不知道
第二个函数,algo还是sha256,data是c,key是上次的结果key

由于第一个函数里的key不知道,以至于这几个变量的值都无法确定,当你随便输入a,b之后,题目提示了一个关键信息 hash_hmac()第二个参数为数组的时候返回值为null,也就是说如果让传入的a为一个数组,让第一个函数计算得到的key即为null,然后再对c和null进行sha256计算即可。
首先get方式构造payload/?a[]=1&c=2
然后在php里面计算出hash_hmac(‘sha256’,2,null)赋给b即可

这里顺带提一嘴,php开发环境的安装和配置属实让我头疼了几个小时,我现在用的是vscode+phpstudy,准备要装phpstorm,vscode和phpstudy具体的配置过程看了一位dl的教程,但是鉴于这位dl的账号只有这一篇博客而且账号已经注销了所以我就不把链接拿过来了,有php环境配置困扰的小伙伴私信我一下吧

在这里插入图片描述
这是配置好的结果 简单说明一下 php的文件需要放在phpstudy_pro文件夹下的WWW文件夹里面 访问页面 看到结果 在这里插入图片描述
这一串就是hash_hmac()的结果,然后将这一串赋给b以post方式提交即可得到flag在这里插入图片描述

文件上传

buuctf 极客大挑战2019 upload1
在这里插入图片描述文件上传
思路就是上传一个一句话或者其他有后门的文件,然后蚁剑或菜刀连接到这个文件,然后嘛,直接根目录找flag也可,终端cat也可

首先尝试一下上传php,发现了拓展名检测

在这里插入图片描述 既然php不行,改成php3,发现也不行,推测是个黑名单。
在这里插入图片描述

然后上传一个图片一句话,又挂了,检测到了<?,应该是检查了头信息
在这里插入图片描述

最后经过测试,发现blacklist没有phtml,并且在一句话加上GTF89a绕过头信息检测即可上传成功。解释一下为啥是GIF89a 首先来说文件头信息监测会监测头信息的二进制串,而在gif/image格式之下,其标准头部信息为47494638 这一串是在winhex里面的内容,对应于文本即为GIF89,而至于a,更多把它看做一个连接符,避免将后面的<script部分也被作为头信息读取,理论上讲a有没有或者换成其他任意的bcdef…应该都是可以的

在这里插入图片描述
在这里插入图片描述

没有给文件路径,但是一般来说,文件会被上传到upload文件夹下,访问ip/upload/name.phtml结果正常
然后蚁剑连接,终端cat /flag即可在这里插入图片描述
看了师傅们的在目录传的文件发现也可以用.htaccess

  //.htaccess
  <FilesMatch "abc">
  SetHandler application/x-httpd-php
  </FilesMatch>

还有一种更简单的写法

AddType application/x-httpd-php   .jpg

htaccess是一个配置文件,目录下有此文件时再上传名字为abc的jpg文件,都会被当成php进行解析,相当于实现了绕过

-------------------------------------ending-----------------------------------------
想帮我找girlfriend或者想一起学习web的小伙伴欢迎私戳我呦

  • 25
    点赞
  • 136
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
### 回答1: 《CTF全栈指南(入门)》是一本帮助初学者入门CTF竞赛的书籍。CTF(Capture The Flag)竞赛是一种安全技术比赛,旨在通过解决各种安全挑战,提高参赛者的信息安全技能。 本书逐步介绍了CTF竞赛的各种基础知识,包括计算机网络基础、Windows和Linux操作系统基础、二进制和汇编语言、Web渗透测试、逆向工程等。 在网络基础部分,读者可以学习到TCP/IP协议、HTTP协议等相关知识,有助于理解网络安全攻防的基础知识。 在操作系统基础和逆向工程部分,读者将了解各种系统漏洞和攻防的基础知识。在二进制和汇编语言部分,读者将学习汇编语言的基本概念,从而具备分析程序漏洞的能力。 在Web渗透测试部分,读者可以学习常用的Web漏洞,例如SQL注入、XSS、CSRF等,以及如何使用工具对Web应用程序进行渗透测试。 总的来说,本书是一本非常实用和有用的CTF学习资源,对于正在学习CTF的入门者来说,是一本不可或缺的参考书。阅读该书籍可以提高参赛者的CTF技能水平,也可以增加在信息安全领域的基础知识。 ### 回答2: 《CTF全栈指南(入门).pdf》是一本介绍网络安全竞赛CTF(Capture The Flag)的指南书籍。本书主要分为四个章节,分别为计算机基础知识、Web安全、二进制安全和密码学。 在计算机基础知识部分,读者将了解计算机体系结构、操作系统、编程语言等基础知识。这些知识是理解后续章节内容的前提。 在Web安全部分,读者将学习如何分析和攻击Web应用程序。包括Web目录枚举、SQL注入、XSS漏洞、文件上传漏洞等常见漏洞类型的原理和利用方法。 在二进制安全部分,读者将学习如何分析和攻击二进制程序。包括反汇编、漏洞利用、ROP(Return-Oriented Programming)等内容。 在密码学部分,读者将了解密码学的基础知识,包括对称加密、非对称加密、哈希等常见算法的原理和应用。 此外,书中还提供了一些CTF比赛中常用的工具和技术,以及一些可以用来练习的虚拟机和挑战网站。最后,书中还分享了一些参加CTF比赛的心得体会和建议。 总的来说,《CTF全栈指南(入门).pdf》是一本非常实用的入门级指南书籍,对想要学习网络安全竞赛CTF的读者来说具有很大的参考价值。 ### 回答3: CTF全栈指南(入门).pdf,是一本面向CTF初学者的入门教材。CTF(Capture The Flag)是一种网络安全技术训练和交流的比赛形式,包括网络安全技术、密码学、逆向工程等多个领域。因此,在CTF比赛中,需要掌握全栈技能。 该教材从CTF的概念入,介绍了CTF比赛的常见题型,包括WEB、REVERSE、CRYPTO等。并介绍了相应的解法和技能。此外,还介绍了CTF比赛的一些常用工具,如IDA Pro、Ollydbg、WireShark等,同时也介绍了一些编程语言和框架,如Python、PHP、Django等。 教材的写作风格通俗易懂,没有过多的专业术语,方便初学者理解。同时,还提供了一些练习题,可供读者练习巩固。 总之,该教材是一本CTF入门界别的经典教材,是学习CTF的入门资料之一。如果您想了解CTF比赛,或者想成为一名安全研究员或网络安全工程师,可以通过该教材深入学习CTF全栈知识。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值