AWD基本流程和MySQL基本知识

一、Mysql基础知识

当涉及到MySQL数据库的基础知识时,以下是一些重要的概念和操作:

  1. 数据库:MySQL是一个关系型数据库管理系统(RDBMS),它用于存储和管理结构化数据。数据库是数据的集合,它包含多个表和索引。

  2. 表:表是MySQL数据库中的基本组织单元,它由行和列组成。每个表包含多个字段(列),每行表示一条记录。

  3. 字段和数据类型:每个表都由一个或多个字段组成,字段定义了表中数据的类型。常见的数据类型包括整数、浮点数、字符、日期等。

  4. 主键:主键是表中的唯一标识符,用于唯一地标识表中的每一行。主键可以由一个或多个字段组成。

  5. 查询语句:使用SQL(Structured Query Language)查询语句可以对数据库进行读取、插入、更新和删除操作。常见的查询语句包括SELECT、INSERT、UPDATE和DELETE。

  6. 索引:索引是一种提高数据库查询性能的数据结构。它可以加快数据检索速度,特别是对于经常被查询的列或字段。

  7. 连接:连接用于将多个表中的数据关联起来。通过在查询中使用JOIN语句,可以根据共同的字段值将多个表连接起来。

  8. 权限和用户管理:MySQL允许为数据库和表设置不同的权限级别。可以创建和管理用户,并为他们分配适当的权限,以控制对数据库的访问和操作。

  9. 备份和恢复:定期备份数据库是非常重要的,以防止数据丢失或损坏。MySQL提供了备份和恢复数据库的工具和命令。

  10. 事务:事务是一系列数据库操作的逻辑单位,要么全部成功执行,要么全部失败回滚。MySQL支持事务的特性,通过使用BEGIN、COMMIT和ROLLBACK语句来管理事务。

  1. 基本语法:

    • 连接到MySQL服务器:mysql -u <username> -p <password> -h <hostname> -P <port>
    • 选择数据库:USE <database_name>;
    • 显示数据库中的表:SHOW TABLES;
    • 显示表结构:DESCRIBE <table_name>;
    • 查询表中的数据:SELECT * FROM <table_name>;
    • 插入数据:INSERT INTO <table_name> (<column1>, <column2>, ...) VALUES (<value1>, <value2>, ...);
    • 更新数据:UPDATE <table_name> SET <column_name> = <new_value> WHERE <condition>;
    • 删除数据:DELETE FROM <table_name> WHERE <condition>;
  2. SQL注入:

    • 在CTF中,你可能会面临SQL注入攻击的任务。了解基本的SQL注入语法和技巧对于成功利用漏洞非常重要。
  3. MySQL函数:

    • 字符串函数:CONCAT(), SUBSTRING(), LENGTH(), REPLACE(), LOWER(), UPPER(), LIKE, REGEXP等。
    • 数值函数:SUM(), AVG(), MIN(), MAX(), COUNT()等。
    • 时间和日期函数:NOW(), DATE(), YEAR(), MONTH(), DAY(), HOUR(), MINUTE(), SECOND(), DATEDIFF()等。
    • 加密函数:MD5(), SHA1(), SHA2(), PASSWORD()等。
  4. 数据库信息:

    • 获取数据库版本:SELECT @@VERSION;
    • 查找数据库名称:SELECT DATABASE();
    • 显示所有数据库:SHOW DATABASES;
    • 显示当前数据库中的表:SHOW TABLES;

 二、AWD基本流程

​前言

我今天接触到了一个非常有意思的模式: AWD (Attack With Defense,攻防兼备)模式。你需要在一场比赛里要扮演攻击方和防守方,攻者得分,失守者会被扣分。也就是说,攻击别人的靶机可以获取 Flag 分数时,别人会被扣分,同时你也要保护自己的主机不被别人得分,以防扣分。

没接触过的同学第一次玩这种模式时,很可能都是一脸懵逼,最近我也打了一次比较简单的小型 AWD,借 NeverSec 公众号来介绍一下一般的 AWD 比赛流程和所需准备的地方。由于我负责 Web 比较多,因此这篇文章不会涉及到二进制方面,主要从 Web 方向介绍。

AWD流程

1. 出题方会给每一支队伍部署同样环境的主机,主机有一台或者多台。

2. 拿到机器后每个队伍会有一定的加固时间或没有加固时间,这个视规则而定。

3. 每个服务、数据库、主机上都会可能存在 flag 字段,并且会定时刷新。通过攻击拿到 flag 后需要提交到裁判机进行得分,一般会提供指定的提交接口。下一轮刷新后,如果还存在该漏洞,可以继续利用漏洞获取 flag 进行得分。

通常来说,如果攻防赛时间比较短的话,一般只会考核 Web 、数据库的渗透、已有漏洞的利用;如果时间较长,很可能还需要做内网渗透,由于这块比较深入,这篇文章暂时不讲,因为我自己也不太会

一般一个队伍由三人组成。负责两个方面:一方面负责防守加固、做基线、加WAF、流量回放等等。一方面负责源码审计、写攻击脚本、维持权限、持续渗透,具体怎么安排都视三人能力而定。

攻击流程

在 AWD 中,Web 攻击流程一般分为信息收集、攻击端口、攻击Web服务、维持权限四步,只要能快速得分,也不一定按照这四步来。

信息收集

第一步,探测主机。用 Nmap 或者 HTTPScan等工具,先扫描主办方给的内网存活主机,弄明白网络拓扑。如果主办方给了主机范围的话就更加省事儿了。

第二步,探测端口。因为主办方给的机器都是一样的,所以直接看自己开了什么端口就行。如果不一样的话,使用 Nmap 进行常见端口扫描,先攻击常见端口,再放后台进行全端口的扫描,发现新端口再加入到攻击队列中。

第三步,探测端口服务。端口服务一般用 Nmap 就能扫到,并且可以用 Nmap 的脚本扫一下漏洞,但是需要注意 Nmap 的相关参数,这要根据情况灵活运用。

简单的信息收集到此完成,除了 Nmap 外可以使用自己熟悉的工具,比如说 msf 啥的,方便后续渗透。

端口攻击

由于 AWD 需要的就是手快,端口一般也会有弱口令的情况存在,比如常见的 22、3389、1443、3306 等主机登陆、数据库端口。

我打过的一次省赛中,就遇到了这种情况。主办方只给队伍机器的 IP,给定用户名,需要自行爆破进入机器,并修改密码。如果这个时候你的手慢,爆破脚本没准备好,你的机器就会沦入别人之手。当时我们就是手慢了,只能眼睁睁看着别人拿到了我们的机器,一轮轮掉分了……

Web 攻击

Web 方面的语言多为 PHP,小部分为 Java 和 Python。这里的 Web 环境分两种情况,一种是已有漏洞的框架,一种是出题人写的框架。

如果是已有漏洞的框架,通常会比较明显。比如说 Struts 2 各种漏洞等等,用工具扫就可以扫出来。这个需要准备得比较充分,在电脑中备好 EXP 库、漏洞库和各种扫描工具库,以便能够快速利用比较明显的漏洞。总之手要快!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值