AWD从入门到成长-day3

CTF AWD从入门到成长

课时5 AWD攻防Linux基础(二)

文件基本属性

Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。

在Linux中我们可以使用ll或者ls -l命令来显示一个文件的属性以及文件所属的用户和组,如:

文件属性:连接数:属主:属组:文件大小:修改日期:文件名

在Linux中第一个字符代表这个文件是目录、文件或链接文件等等。
[d] 表示为目录 [-] 表示为文件 [l] 表示为link file 链接文件 [b] 表示为设备文件中可供存储的接口设备 [c] 表示为设备文件中的串行接口设备,如鼠标、键盘等
第0位确定文件类型
第1-3位确定属主(该文件的所有者)拥有该文件的权限
第4-6位确定属组(所有者的同组用户)拥有该文件的权限
第7-9位确定其他用户拥有该文件的权限
文件 读 写 执行 读 写 执行 读 写 执行
  0   1   2   3    4  5   6    7  8   9


[ r]代表可读(read)、[ w]代表可写(write)、[ x]代表可执行(execut e)。这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]。
• 读(r)=4
• 写(w)=2
• 执行(x)=1
• 读+写+执行=4+2+1=7
权限赋予:
chmod 属主:属组:其他用户 目录或文件 (chmod 777 test.php)

user、group、others三种身份的权限,那么可用u、g、o来代表三种身份的权限,此外,用a代表all表示所有的身份。

变更权限的命令的语法为:chmod 身份 符号 权限 文件名或目录名

chmod (u,g,o,a) (+加入,-除去,=设定) (r,w,x) (文件名或目录)

image-20241228175434676

更改文件属性

1、chgrp:更改文件属组
2、chown:更改文件的属主,也可以同时更改文件的属组
chgrp [-R]属组名 文件名
chown [-R]属主名 文件名
chown [-R]属主名:属组名 文件名

用户管理

Linux系统用户是根据用户ID来识别的,默认ID长度为32位,从默认ID编号从0开始,但是为了和老式系统兼容,用户ID限制在60000以下,Linux用户分总共分为三种,分别如下: root用户(ID 0) 系统用户(ID 1-499) 普通用户(ID 500以上)

主办方有可能会藏一个用户在那边,相当于后门

CentOS

在CentOS下useradd与adduser是没有区别的都是在创建用户,在/home下自动创建目录,没有设置密码,需要使用passwd命令修改密码。

Ubuntu

Ubuntu下useradd与adduser有所不同

useradd在使用该命令创建用户是不会在/home下自动创建与用户名同名的用户目录,而且不会自动选择shell版本,也没有设置密码,那么这个用户是不能登录的,需要使用passwd命令修改密码。 
adduser在使用该命令创建用户是会在/home下自动创建与用户名同名的用户目录,系统shell版本,会在创建时会提示输入密码,更加友好。 
userdel 删除用户 userdel只能删除用户,并不会删除相关的目录文件。userdel -r可以删除用户及相关目录。
用户和用户组的对应关系
一对一:即一个用户可以存在一个组中,也可以是组中的唯一成员。比如,root。 
一对多:即一个用户可以存在多个组中,这个用户就具有这些组。 
多对一:即多个用户可以存在一个组中,这些用户这些组的共同权限。 
多对多:即多用户可以存在于多个组中。并且几个用户可以归属相同的组;其实多对多的关系是前面三条的扩展。
Linux 系统中的账号文件
用户名配置文件/etc/passwd

该文件中的每一行对应一个用户,包含以下 7 个字段:

1. 用户名。
2. 密码(已经加密)。
3. UID(用户标识),操作系统自己用的。
4. GID(组标识)。
5. 用户全名或本地账号。
6. 开始目录。
7. 登录使用的 Shell,就是对登录命令进行解析的工具。
用户密码配置文件/etc/shadow
 (1):帐号名称
 (2):密码:这里是加密过的,但高手也可以解密的。要主要安全问题(代! 符号标识该帐号不能用来登录)
 (3):上次修改密码的日期
 (4):密码不可被变更的天数
 (5):密码需要被重新变更的天数(99999表示不需要变更) 
 (6):密码变更前提前几天警告 
 (7):帐号失效日期
 (8):帐号取消日期 
 (9):保留条目,目前没用
用户组密码配置文件/etc/gshadow
第一字段:用户组名;
第二字段:用户组的密码;
第三字段:用户组管理员的账号;
第四字段:此用户组所包含的用户
命令
  1. groupadd
    注:添加用户组;
    列: groupadd test
  2. groupmod
    注:修改用户组信息
    列 (1): groupmod -g test1 test // 修改用户组名称
    列 (2): groupmod -g 1234 test1 // 修改用户组编号
  3. groupdel
    注:删除用户组
    列: groupdel test1
  4. groups
    注:查看用户的用户组信息
  5. useradd
    注:创建用户
    列 (1): useradd test
    列 (2): useradd -g user test // 创建 test 用户,并指定用户组 user
  6. usermod
    注:修改用户信息
    列 (1): usermod -c admin123 test // 修改 test 用户描述信息为 admin123
    列 (2): usermod -l test1 test // 修改 test 名称位 test1
    列 (3): usermod -g user test1 // 修改用户的用户组
    列 (4): userdel test1 // 删除用户

vim编辑器

vim的工作模式
vim比vi高级
vim 有三种工作模式:
1、命令模式 只能查看内容
2、输入模式 可以对内容进行修改
3、末行模式 可以对内容执行命令
按键说明:
h左/l右/j下/k上/w下一个单词/b上一个单词
文件删除
x 删除游标所在的字符或者输入10x,删除10个连续字符
X 删除游标所在前一个字符
Delete 同x
dd 删除整行或者输入3dd,将会删除3行文本
dw 删除一个单词(不适用中文)
d$或D 删除至行尾
d^ 删除至行首
dG 删除到文档结尾处
d1G 删至文档首部
文件复制
yy:复制光标所在的整行
Y 或 y$  复制从光标所在处开始到行尾的内容
y0  复制从光标前一个字符开始到行首的内容
y(  复制到上一句的开始
y) 复制到下一句的开始
z) yw  复制一个单词
文件粘贴选择
p 命令:粘贴命令,粘贴当前缓冲区中的内容。
v命令:在命令模式下进行文本选择。在需要选择的文本的起始处按下v键进入块选择模式,然后移动光标到块尾处。这之间的部分被高亮显示,表示被选中。
V命令:在命令模式下按行进行文本选择。在需要选择的文本的第一行按下V键,然后移动光标到块的最后一行。这之间的所有行被高亮显示,表示被选中。
撤销命令
u 命令:该命令撤销上一次所做的操作。多次使用u命令会一步一步依次撤销之前做过的操作(在一次切换到文本输入模式中输入的所有文本算一次操作)。
U 命令:该命令会一次性撤销自上次移动到当前行以来做过的所有操作,再使用一次U命令则撤销之前的U命令所做的操作,恢复被撤销的内容。
查找检索命令
/查找内容
?查找内容
n 重复上一条检索命令
N命令重复上一条检索命令,但检索方向改变。例如上次的检索命令是向前检索,那么此次检索的方向是向后;如果上次的检索命令是向后检索,那么此次检索的方向是向前。
命令 说明
:q! 强制退出,不保存
:q 退出
:wq! 强制保存并退出
:w <文件路径> 另存为
:saveas 文件路径 另存为
:x 保存并退出
:wq 保存并退出
ZZ保存并退出相当于 wq
按键 作用
Ctrl+d  键盘输入结束或退出终端
Ctrl+s  暂停当前程序,暂停后按下任意键恢复运行
Ctrl+z  将当前程序放到后台运行,恢复到前台为命令fg
Ctrl+a  将光标移至输入行头,相当于Home键
Ctrl+e  将光标移至输入行末,相当于End键
Ctrl+k  删除从光标所在位置到行末
Alt+Backspace 向前删除一个单词
Shift+PgUp 将终端显示向上滚动
Shift+PgDn 将终端显示向下滚动
Shift+zz 普通模式下输入即可保存退出vim
末行模式
行号设置命令:set nu (nonu)
显示设置命令:set hlsearch (nohlsearch)
语法缩进命令:set autoindent
文件存储命令:set backup(nobackup)
显示选项命令:set all
语法高亮命令:syntax on (off)
大小写区分命令:set ignorecase(noignorecase)

课时6 AWD流量分析(一)

软防御,看流量,自己没有扫到,但是别人挖到了

AWD比赛中我们会进行流量监控,通过linux中的tcpdump进行流量记录,我们记录了流量之后可以对我们的攻击进行分析,我们通过wireshark查看流量包对我们哪里进行了攻击并且对其进行了溯源,进行防御并且编写脚本进行得分。

工具:wireshark和tcpdump

三次握手:SYN,SYN+ACK,ACK

过滤规则(Wireshark)

比较运算符 (Comparison operators):
英文写法C语言写法含义
eq==等于
ne!=不等于
gt>大于
lt<小于
ge>=大于等于
le<=小于等于
逻辑运算符 (Logical expressions):
英文写法C语言写法含义
and&&逻辑与
or||逻辑或
xor^^逻辑异或
not!逻辑非
1、[过滤IP地址]

(1)ip.addr==192.168.1.1//只显示源/目的IP为192.168.1.1的数据包

(2)not ip.src==1.1.1.1//不显示源IP为1.1.1.1的数据包

(3)ip.src==1.1.1.1 or ip.dst==1.1.1.2//只显示源IP为1.1.1.1或目的IP为1.1.1.2的数据包

2、[过滤端口]

(1)tcp.port eq 80//不管端口是来源的还是目标的都显示

(2)tcp.port == 80

(3)tcp.port eq 2722

(4)tcp.port eq 80 or udp.port eq 80

(5)tcp.dstport == 80//只显示tcp协议的目标端口80

(6)tcp.srcport == 80//只显示tcp协议的来源端口80

(7)udp.port eq 15000

(8)tcp.port >= 1 and tcp.port <= 80//过滤端口范围

3、[过滤MAC地址]

(1)eth.dst == A0:00:00:04:C5:84//过滤目标MAC

(2)eth.src eq A0:00:00:04:C5:84//过滤来源MAC

(3)eth.dst == A0:00:00:04:C5:84

(4)eth.dst == A0-00-00-04-C5-84

(5)eth.addr eq A0:00:00:04:C5:84//过滤来源MAC和目标MAC都等于A0:00:00:04:C5:84的

4、【http请求方式过滤】

(1)http.request.method == "GET"

(2)http.request.method == "POST"

(3)http.host matches "www.baidu.com|baidu.cn"//matches可以写多个域名

(4)http.host contains "www.baidu.com"//contains只能写一个域名

(5)http contains "GET"

5、[http请求方式过滤]

http.request.method == "GET" && http contains "Host:"

http.request.method == "GET" && http contains "User-Agent:"

http.request.method == "POST" && http contains "Host:"

http.request.method == "POST" && http contains "User-Agent:"

http contains "HTTP/1.1 200 OK" && http contains "Content-Type:"

http contains "HTTP/1.0 200 OK" && http contains "Content-Type:"

Tcpdump

常用参数

tcpdump采用命令行方式,它的命令格式为:

tcpdump [-adeflnNOpqStvx] [-c 数量]
[-F 文件名] [-i 网络接口]
[-r 文件名] [-s snaplen]
[-T 类型] [-w 文件名] [表达式]
选项介绍

-A以ASCII格式打印出所有分组,并将链路层的头最小化。

-C在收到指定的数量的分组后,tcpdump就会停止。

-C在将一个原始分组写入文件之前,检查文件当前的大小是否超过了参数filesize中指定的大小。如果超过了指定大小,则关闭当前文件,然后在打开一个新的文件。参数filesize的单位是兆字节(是1,000,000字节,而不是1,048,576字节)。

-d将匹配信息包的代码以人们能够理解的汇编格式给出。

-dd将匹配信息包的代码以C语言程序段的格式给出。

-ddd将匹配信息包的代码以十进制的形式给出。

-D打印出系统中所有可以用tcpdump截包的网络接口。

-e在输出行打印出数据链路层的头部信息。

-Espi@ipaddr algo:secret解密那些以addr作为地址,并且包含了安全参数索引值spi的IPsec ESP分组。

-f将外部的Internet地址以数字的形式打印出来。

-F从指定的文件中读取表达式,忽略命令行中给出的表达式。

-i指定监听的网络接口。

-l使标准输出变为缓冲行形式,可以把数据导出到文件。

-L列出网络接口的已知数据链路。

-m从文件module中导入SMI MIB模块定义。该参数可以被使用多次,以导入多个MIB模块。

-M如果tcp报文中存在TCP-MD5选项,则需要用secret作为共享的验证码用于验证TCP-MD5选选项摘要(详情可参考RFC 2385)。

-b在数据-链路层上选择协议,包括ip、arp、rarp、ipx都是这一层的。

-n不把网络地址转换成名字。

-nn不进行端口名称的转换。

-N不输出主机名中的域名部分。例如,nic.ddn.mil只输出nic

-t在输出的每一行不打印时间戳。

-O不运行分组分组匹配(packet-matching)代码优化程序。

-P不将网络接口设置成混杂模式。

-q快速输出。只输出较少的协议信息。

-r从指定的文件中读取包(这些包一般通过-w选项产生)。

-S将tcp的序列号以绝对值形式输出,而不是相对值。

-S从每个分组中读取最开始的snaplen个字节,而不是默认的68个字节。

-T将监听到的包直接解释为指定的类型的报文,常见的类型有rpc(远程过程调用)和snmp(简单网络管理协议)。

-t不在每一行中输出时间戳。

-tt在每一行中输出非格式化的时间戳。

-ttt输出本行和前面一行之间的时间差。

-tttt在每一行中输出由date处理的默认格式的时间戳。

-u输出未解码的NFS句柄。

-V输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息。

-vv输出详细的报文信息。

-W直接将分组写入文件中,而不是不分析并打印出来。

列举1:(端口过滤)

抓取所有经过ens33,目的或源端口是22的网络数据:
tcpdump -i ens33 port 22
指定源端口:tcpdump -i ens33 src port 22
指定目的端口:tcpdump -i ens33 dst port 22

列举2:(网络过滤)

tcpdump -i ens33 net 192.168.1.1
tcpdump -i ens33 src net 192.168.1.1
tcpdump -i ens33 dst net 192.168.1.1

列举3:(协议过滤)

tcpdump -i ens33 arp
tcpdump -i ens33 ip
tcpdump -i ens33 tcp
tcpdump -i ens33 udp
tcpdump -i ens33 icmp

课时7 AWD流量分析(二)

在攻防比赛中,如何通过TCP dump和Winshark工具结合进行流量分析,识别攻击来源。内容涵盖了TCP dump的抓包命令使用技巧,如指定网卡、端口等。随后,通过实战实验展示了如何利用靶机的多个漏洞,包括命令执行、文件包含、SQL注入和文件上传漏洞,进行渗透测试,演示如何通过流量分析发现这些攻击行为。

使用命令进行抓包:
root@user:~# tcpdump -i eth0 -s 0 -w c.pcap port 8801

监控的时候基本只保留服务端口,不然抓的包太乱

1、命令执行

筛HTTP,然后找特殊的包,追踪HTTP流,看到shell=

2、文件包含

筛完HTTP,筛选字符串flag

3、SQL注入

文件-导出-HTTP

4、万能密码

首先,外部的端口直接筛选http,其余不用看,然后追踪TCP流和HTTP流,然后用查找来定位,搜索password,看一下哪个目录,先找一下对应的包(如login.php目录),筛选一下再追踪流,docker配出的环境基本都是http

5、文件上传

筛HTTP,然后找upload,追踪流一眼过去就能看到eval木马,

或者通过日志监控(脚本)

python sqlmap.py -u “xx.xx.xx.xx:port/xx.php?id=1”

log_record.php

试试通防扣不扣分,流量可能比较多,自己写脚本log比较好用

终于又开始写了,这学期的课结束了,快点填坑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值