TIER 1: Appointment

TIER 1: Appointment

SQL

Structured Query Language 是一种用于管理关系型数据库的编程语言。它是一种标准化的语言,用于定义、操作和管理数据库中的数据。

经常提及的 SQL, DB, DBMS 分别是什么及他们之间的关系

  • DB (DataBase) 数据库,在硬盘上以文件的形式存在
  • DBMS (DataBase Management System) 数据库管理系统,是一种软件,比如 MySQL, Oracle, SQL Server 等
  • SQL (Structured Query Language) 结构化查询语言,是一门标准通用的语言

他们之间的关系:DBMS --(执行)-> SQL --(操作)-> DB

SQL 语言具有以下主要组成部分:

  • 数据定义语言(DDL):DDL 用于定义数据库结构和模式。DDL 语句允许用户定义数据库的结构和模式,例如创建新表、添加新列或修改表的结构。

  • 数据操作语言(DML):DML 用于处理数据库中的数据。DML 语句允许用户向表中插入新数据、修改现有数据和删除数据行。

  • 数据查询语言(DQL):DQL 用于查询数据库中的数据。DQL 语句允许从一个或多个表中检索数据,并可以使用条件、排序、分组和连接等来操作和筛选数据。

  • 事务处理语言(TPL):TPL 用于处理数据库操作的事务性,即一系列相关的数据库操作要么全部成功执行,要么全部回滚。其意义在于保证数据库中的数据一致性。

  • 数据控制语言(DCL):DCL 用于控制数据库对象的访问权限和安全性。

不同的数据库系统可能会有一些差异和特定的扩展,因此在使用 SQL 时,建议参考具体数据库的文档和规范。所有阅读文档是基本功,不要惧怕文档。它是帮助你解决问题的最好的工具 👻

下面是资料推荐:

在靶机 Appointment 和 Sequel 中,我们探讨的都是 MySQL 相关内容,因此推荐阅读 MySQL 官方文档。

PII

Personally Identifiable Information 是个人可识别信息,指可以用于唯一标识、定位或联系特定个人的数据或信息。比如姓名、身份证号、手机号、邮箱、银行卡号等。这里只是简单提及,作为术语科普 😉

在进行信息收集时,我们核心的目标就是收集到 PII,因为这些信息可以帮助我们进行进一步的渗透。

OWASP

Open Web Application Security Project 是一个致力于提升 Web 应用程序安全的全球性开放社区和组织。OWASP 的使命是帮助组织开发、获取和维护可信赖的应用程序,通过教育、研究和开发开源工具和资源来推动应用程序安全。OWASP的官方网站 👉 https://www.owasp.org

OWASP Top 10 是 OWASP 组织发布的十大 Web 安全风险,建议阅读 👉 https://owasp.org/www-project-top-ten/

Injection 在 2021 OWASP Top 10 中排名第三,本次靶机 Appointment 涉及到 SQL Injection 的内容,SQL Injection 是 Injection 的分支。

Apache HTTP Server

Apache HTTP Server,通常简称为 Apache,是一个开源的、跨平台的 Web 服务器软件。它是最流行的 Web 服务器之一,被广泛用于搭建和运行网站和 Web 应用。

  • 官方网站 https://httpd.apache.org

  • 常用配置文件

    • httpd.conf 主配置文件
    • httpd-vhosts.conf 虚拟主机配置文件
    • httpd-ssl.conf SSL 配置文件
  • 端口开放

    • HTTP 默认端口 tcp/80
    • HTTPS 默认端口 tcp/443

Web 应用是一种在 Web 浏览器或其他客户端设备上运行的应用程序。浏览器通过 url 访问 Web 应用,Web 应用一般通过 HTTP 协议与浏览器进行通信。其实现在主流 HTTPS 协议,但是 HTTPS 协议是基于 HTTP 协议的,因此我们可以认为 Web 应用是基于 HTTP 协议的。区别主要是是否加密,HTTPS 额外套了一层 SSL/TLS 加密。

在本次靶机 Appointment 中,我们并不会涉及到使用 Apache HTTP Server 搭建 Web 服务。

主要是下面内容会涉及 Web 路径爆破,靶机的 Web 服务是基于 Apache HTTP Server 搭建的,因此这里简单介绍一下 Apache HTTP Server。

补充 URL,计算机专业的同学可能会比较熟悉,URL 是 Uniform Resource Locator 的缩写,统一资源定位符,用于定位互联网上的资源。URL 由协议、主机、端口、路径、查询参数、锚点组成。不多说,如果这个都不知道,那就太尴尬了 😅

Gobuster

Gobuster是一种用于目录和子域名爆破的开源工具。它通过对目标网站进行字典攻击,逐个尝试可能的目录和子域名,来发现隐藏的目录或敏感信息。

以下是Gobuster的一些特点和用法:

特点:

  • 多线程处理:Gobuster 可以使用多个线程同时进行爆破,提高爆破速度。
  • 多种模式:它支持多种爆破模式,包括目录爆破、子域名爆破等。
  • 自定义字典:你可以使用自定义的字典文件来指定爆破时尝试的目录或子域名列表。
  • 状态码过滤:你可以设置过滤规则,只显示特定状态码的响应结果,以过滤掉不感兴趣的目录或页面。

简单用法:

  1. 安装 Gobuster:你可以从 https://github.com/OJ/gobuster/releases 下载或者通过包管理工具安装,比如 apt install gobuster 安装。

  2. 运行 Gobuster:使用命令行界面执行 Gobuster,指定目标 URL、爆破模式、字典文件等参数。例如:

    gobuster dir -u http://example.com -w /path/to/wordlist.txt
    

    这将对 http://example.com 进行目录爆破,使用指定的字典文件进行尝试。

  3. 查看结果:Gobuster 会显示每个尝试的目录或子域名,并显示响应状态码和页面大小等信息。你可以根据需要分析结果并进一步探索目标。

更多内容建议 --help 或者查看官方 Github 项目 👉 https://github.com/OJ/gobuster

关于字典,这里简单提及一下,字典是指用于爆破的文件,其中包含了可能的变量参数。字典是爆破的核心,字典越大,爆破的效果越好,但是也会增加爆破的时间。这里的爆破字典内容主要是目录和子域名。

如果你使用的是 Kali 在 /usr/share/wordlists 中有一个字典合集,其中包含了很多字典文件,你可以使用这些字典文件进行爆破。如果你使用的其它系统,推荐项目 https://github.com/danielmiessler/SecLists

SQL Injection

SQL Injection 通过在应用程序的输入字段中注入恶意的 SQL 语句,从而绕过预期的验证和过滤机制,对数据库进行非法操作或获取敏感信息。以下是一个简单的 SQL 注入的示例:

  • 假设有一个登录表单,用户需要输入用户名和密码才能登录。应用程序将用户提供的输入直接拼接到 SQL 查询语句中,如下所示:

    SELECT * FROM users WHERE username = '输入的用户名' AND password = '输入的密码';
    
  • 攻击者可以在用户名字段中注入恶意的 SQL 代码,以尝试绕过认证验证。例如,如果攻击者在用户名字段中输入 ' OR '1'='1'--,那么最终构成的 SQL 语句将变为:

    SELECT * FROM users WHERE username = '' OR '1'='1'--' AND password = '输入的密码';
    
  • 在这种情况下,由于 '1'='1' 永远为真,所以该 SQL 查询将返回所有用户的记录,绕过了密码验证步骤。

实际这里需要一定的 SQL 语法知识,如果你不熟悉 SQL 语法,回顾前面 SQL 中的内容,根据提示进行学习。

通过 SQL 注入登录后就是 flag 信息。

posted @ 2023-05-18 16:32  sha0dow  阅读(40)  评论(0编辑  收藏  举报