图文来自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的小伙伴欢迎私戳我呦

CTF萌新入坑指南(web篇)(21.6.5已更新)相关推荐

  1. 平安京服务器维护不能打字,决战!平安京|萌新入坑指南 新手注意六大准则

    原标题:决战!平安京|萌新入坑指南 新手注意六大准则 决战平安京萌新入坑不会玩怎么办?记住下面这六个准则,就是你从新手变成大神的流程.下面带来新手攻略教学,看看都有哪些注意事项. 准则一:熟悉操作方式 ...

  2. 常见web漏洞验证攻略(萌新入坑必备!)

    常见web漏洞验证攻略(萌新入坑必备 首先,祝大家愚人节快乐,玩笑有度,"愚"人同乐. 其次,回想当年刚入坑的时候了解的比较少,也没人带,一般过去就是xss,后来xss的防护了,就 ...

  3. 伊洛纳登录显示服务器连接中,伊洛纳萌新入坑常见问题汇总

    伊洛纳萌新入坑常见问题汇总,很多玩家对一些入坑时遇到的问题不是很明白小编将问题做了一个汇总,有需要的玩家一定记得看看哦!快来看看本期的伊洛纳萌新入坑常见问题汇总吧! Q:为什么要读取电话权限? 我们采 ...

  4. 魔兽世界最新服务器推荐,魔兽世界服务器人数最新数据!萌新入坑,老玩家转服慎重选择!...

    原标题:魔兽世界服务器人数最新数据!萌新入坑,老玩家转服慎重选择! 以下是小编-玩游戏的斯塔文按表面数据总结的:如果因疏忽,漏掉的.望请谅解,网友可以在留言补充,帮助更多玩家. 首先安苏人是最多的.总 ...

  5. uniapp调用c语言方法,uni-app 入坑指南-web开发

    编辑推荐: 本文重点介绍了 uni-app 入坑指南,方便大家更好的了解 uni-app 本篇只讲述 uni-app,不与其他类似框架进行对比 本文来自于博客园,由火龙果软件Alice编辑推荐. 什么 ...

  6. 我的世界java萌新须知_《原神》萌新入坑须知(全网最全,50个玩原神必备诀窍)...

    1.收集神瞳要标点. 如果你记忆力不好,也不够肝,那么在收集每一个风神瞳和岩神瞳的时候要标点,但是地图标点有100个上限,所以,131个岩神瞳收集,建议在米哈游社区的模拟器上标点.1.1版本有查找器, ...

  7. 飞猪登录器推荐《怪物猎人世界》萌新入坑武器装备推荐

    飞猪IP,地址修改器官网 http://www.feizhujsq.com/ 飞猪ip登录器致力于解决互联网延迟,为让中国玩家畅玩海内外优秀游戏(Steam/Origin/Uplay/PS/XBOX等 ...

  8. 崩坏3九游服务器稳定吗,为什么崩坏三萌新入坑推荐选择官服而非渠道服,盘点几个必要的理由...

    崩坏三做为一款角色扮演类二次元手游,从16年公测10月份公测至今已经三年多了.自发布后凭借着在渲染.画质和游戏内核上的出众表现力,一时间被誉为国产手游的动作画质巅峰,受到了众多玩家的好评. 也有越来越 ...

  9. csgo跑图文件_CSGO:萌新入坑如何快速优化游戏设置?这个跑图指令也是十分实用...

    一般的萌新所不知道的基本指令教学,如果我们在打平台的时候,在游戏开始的时候这三个开始游戏前的指令是很好用的,这三个指令有着不同的好处.首先就来教一下,我们需要在游戏开始之前所需要设置的地方. 我们打开 ...

最新文章

  1. 5GS 协议栈 — PFCP 协议 — MAR 多接入规则
  2. mysql 本周函数_【转】MySQL时间函数的使用:查询本周、下周、本月、下个月份的数据...
  3. D - Connect the Cities (HDU - 3371)
  4. Visual Studio 2019 + MFC——配置MFC
  5. TiKV 在饿了么的大规模应用实践
  6. 4.2 字符串简介
  7. 索引sql server_SQL Server索引设计基础和准则
  8. 计算机1级b知识点,初中信息技术等级考试知识点
  9. 转载:ITRS/GCRS/J2000坐标系的相互转换
  10. 知识产权服务代理行业税收政策
  11. java电驴_转:java写的电驴下载完成关机小程序
  12. 广西事业单位考试 计算机基础知识,2018年广西壮族自治区事业单位考试《公共基础知识》1000题【必考题库】.pdf...
  13. 全渠道客户体验是什么?如何创建全渠道营销平台?
  14. 源码时代软测干货分享|带你了解CGI支持模块
  15. ESP32编译自己的micropython固件以支持OV2640、SPIRAM、bluetooth等完整功能
  16. 玩转数据结构之双向循环链表
  17. 【推荐系统】特征工程(1)
  18. 打造一个创客专用的UbuntuKylin版本-UMaker
  19. H1102NL 普思Pulse 网络变压器
  20. QQ空间蓝色字体,点击跳转到加好友页面方法分享

热门文章

  1. 企业级日志分析系统ELK(Elasticsearch , Logstash, Kibana)
  2. 2021Java高级进阶学习资料!java面试刷题软件
  3. 微信小程序的text标签实现换行,空格等
  4. java redis之jredis操作
  5. 浅谈XMl解析的几种方式
  6. js if 判断的使用
  7. element中popover弹框中有选择器,点击后popover消失的解决办法
  8. v9 数据库数据表结构
  9. thymeleaf fragments可选参数
  10. 蓝牙耳机哪个音质好?1000左右音质最好的耳机