awd学习

AWD简介

模式介绍

攻防模式 | AWD (Attack With Defense)这个是属于网络安全赛事中的一种
一般来说这个更加贴近于实战,不只是考验选手的漏洞挖掘能力,还有队漏洞的抵御能力
攻防模式一般来说己方有着一台到多台不等的靶机
在比赛中,对方和己方的靶机一样,没有区别,通过获取对方靶机里面主办方设置的flag
并且提交来获取得到分数
其通常会被拿来当作比赛中的决赛部分,而夺旗赛一般拿来做初赛
但也存在两种结合

赛程安排

首先一般来说会有手册之类的东西,提供阅读来获取得到你连接你靶机的ip用户名密码之类
这里主要看主办方,并且其所给用户的权限大多数是一般用户不会给到root权限
靶机大多数情况下是linux系统,其他系统比较少见
之后,主办方会给予10分钟到30分钟不等的时间来让你队自己的靶机进行漏洞
的修补,这里也就是所谓的加固阶段,之后就进入了攻击阶段
这里听网课的时候大佬也是介绍过,一般来说这个比赛的前几名
开局就已经决定了,他们可以直接使用自动化脚本来进行完善和攻击
比起手动,效率太高更全面
这里也是把流程图奉上

image

大概分数得失情况

这里简单说一下了解到的分数得失情况
得到对方靶机的flag会加分,至于这些分数大多是由主办方进行规定,不死板
而对方靶机所得到的分数是从己方扣除
存在重置的选项,可以直接把靶机恢复初始状态,具体分数不定
还有一种比较严重的问题
就是宕机
其存在一个check的程序,会检测你的靶机内部程序是否完整,文件是否缺失
若是被判定为缺失
则会扣除大量的分数,这个是最严重的

攻击手段与防御手段

ssh弱口令

这种情况在日常生活中不常见,甚至于可以说基本不存在
但是在官方给的可能会存在ssh是弱口令,或者有规律的情况
这里先把密码改成弱口令演示一波爆破
首先我们要先连接上team1的靶机
这里可以直接使用MoXterm来连接,也可以直接使用ssh连接
这里为了方便直接在虚拟机里面连了

ssh -p 端口 用户名@ip

image

这边就直接连上去了
然后直接输入passwd

image

这里一开是要输入自己的密码然后再输入新的密码
但是这里好像是因为密码太简单了被直接就是不准用
这里去用一个弱口令
直接用admin123

image

爆破的方式就演示一下基础爆破,因为就个人认为这个东西,没有必要去深究
一般来说ssh的密码都是很复杂的,这个也比较好防御

基础爆破 - Hydra

指定用户名爆破
hydra -l root -P /usr/share/wordlists/rockyou.txt(字典位置) ssh://目标IP -t 4 -V

多用户爆破(用户名列表user.txt)
hydra -L user.txt -P pass.txt -t 6 ssh://目标ip -o result.txt

这里就直接指定用ctf这个用户来爆破

这里用的是ubuntu的虚拟机进行的操作
这里安装一下

sudo apt install hydra

image

然后这里直接把那个top的弱口令拿来爆破

hydra -l ctf -P top10000password.txt ssh://192.168.1.5:2201 -t 4 -V

image

这个就是在攻击了

就是速度有点慢,可以用下面一个爆破方法,之后的就不演示了

高速爆破 - Medusa

medusa -h 目标IP -U user.txt -P pass.txt -M ssh -T 10

云服务器爆破(防范被封IP)

通过代理池轮换IP

proxychains hydra -l admin -P top500_passwords.txt ssh://目标IP

不过这个需要去提前配置/etc/proxychains.conf加载代理列表
具体不做演示,可以自己去尝试

login弱口令

这个靶机给两方都提供了两个登录页面

image

两边的都是一样的,这里可以直接爆破登录
这种的登录爆破就是直接bp就ok

image

不过这里似乎这个字典爆不出来,这里还有一个更加强大的字典
这里就不展示了

这里去看一下login.php里面的用户名和密码是怎样查询的

image

这里可以看出他是从数据库里面来获取的用户名和密码
所以我们如果要修改就要进入数据库里面进行修改

mysql弱口令

这里我们可以直接找到其密码用户名之类东西
全部在config.php里面

image

这里也是可以看见数据库的密码这些
这里既然已经是一个弱口令了直接先爆破看看
这里依然是使用hydra

hydra -l root -P top10000password.txt mysql://192.168.1.5 -V -t 6 -f

image

就是这时间依然漫长
大概就演示一下
然后我们这里连接一下看看

这里为了防止有些数据库里面没有密码这里就直接使用这个命令来连接

mysql -u root -p

这里输入看看

image

这里可以看出我们这样可以避免了存在没有密码的数据库

这里再输入密码root就可以连接上了

image

这里可以看到我们成功的连接进去了
之后就是一些对mysql数据库的操作

来到这里就可以修改密码了
以下这些方法需要连接到数据库才能用
这里不演示了,只给出方法

方法一

mysql> set password for 用户名@localhost = password('新密码');

方法二

mysqladmin -u用户名 -p旧密码 password 新密码

首先我们可以利用show databases;来查看库

因为我们现在还没有进入任何一个库里面的,这个其实在学sql注入的时候写过文章,但是网站崩掉了备份也丢了
所以这里再写一下怎么修改其内容

输入

image

这里直接去找存有admin那个密码的库
他在test里面

使用当前数据库

use tset;

image

看表

show tables;

image

直接查询其admin的内容

select * from admin;

image

这里就看见密码了可以先登录一手

image

可以发现我们登录之后就可以看见flag了

这里再说一下这个密码怎么改

update admin set user_pass = '您的新密码' where user_id = 1;

更新一下看看

image

image

这样就ok了

备份

web源码备份

tar -zcvf ~/backup/web.tar.gz /var/www/html/

这个是一般来说的备份操作
先来解释一下这些参数是什么意思

image

这里解释一下什么叫做归档文件

归档文件(Archive File)是将多个文件/目录及其元数据(如权限、路径结构)打包成一个独立文件的技术封装形式。它不是压缩,而是“打包箱子”

数据库备份

备份mysql数据库

mysqldump -u 用户名 -p 数据库名 > back.sql

mysqldump -u 用户名 -p --all-databases > bak.sql

还原mysql数据库

mysql -u 用户名 -p 密码 数据库名 < bak.sql

这里备份比较简单就不演示了

SQL注入

先来注意一下登录界面的源码

点击查看代码
	if (!empty($_POST['username'])) {
	$user=$_POST['username'];
	$pass=$_POST['password'];
	$query = "SELECT * FROM admin WHERE user_name='{$user}' and user_pass='{$pass}' ";
	$data = mysqli_query($dbc,$query);	
     if (mysqli_num_rows($data) == 1) {
        $row = mysqli_fetch_array($data);
		$_SESSION['username'] = $row['user_name'];
        header('Location: ./admin/index.php');
     }else{
       echo '<hr/><center><br/>用户名:',$user,'<br/>密码:',$pass,'<br/><br/>用户名密码错误</center>';
       }
       
} 
?>

这里可以看出有非常明显的SQL注入的点
他使用POST来获取得到用户输入的密码和用户名
然后直接拼接到SQL的查询语句中
没有经过任何的操作这里其实就是一个SQL注入

这里可以直接使用万能密码看一下能不能登录

image

image

可以看到也是直接登录进来了,这里就是一个SQL漏洞

这里比较好的方案就是使用预处理语句

点击查看代码
// 使用参数化查询
$query = "SELECT * FROM admin WHERE user_name=? and user_pass=?";
$stmt = mysqli_prepare($dbc, $query);
mysqli_stmt_bind_param($stmt, "ss", $user, $pass);
mysqli_stmt_execute($stmt);
$data = mysqli_stmt_get_result($stmt);

这个预处理语句就是把用户输入的全部当作字符串来填补到查询语句中
代码和数据分离

这里把语句替换了看一下

image

这里再看看刚刚的万能密码还能不能用

posted @ 2025-07-20 20:55  crook666  阅读(81)  评论(0)    收藏  举报