sqlmap常用命令

 

sqlmap

一个开源的渗透测试工具

功能 :

1,判断可注入的参数

2,判断可以用哪种注入技术注入

3,识别出哪种数据库

4,根据用户的选择,读取哪些数据

5,可执行情况

6,当前数据库用户名称和拥有的权限

7,发现web虚拟目录

8,绕过防火墙

基本流程

当给sqlmap一个url的时候,他会:

1,检测网站是否能够访问

2,检测是否有WAF

3,判断可利用的参数

4,判断可以用哪种sql技术来注入

5,识别出哪种数据库

6,根据用户输入的参数内容,进行操作,查看库名,表名,字段名,获取数据

基本使用

1,判断是否存在注入点? 注入点的类型?

2,order by 查询

3,union select 1,2,3查看数据回显

4,获取基本信息version、database、user

5,获取数据表名,字段名

6,获取数据

给sqlmap地址要带有参数

1,指定url地址

Sqlmap -u + "url"

2,查看所有数据库

Sqlmap -u "url" --dbs

3,查看当前网站使用的数据库名

Sqlmap  -u "url" --current-db

4,查看表名【某个数据库下的表】

Sqlmap -u "url" -D指定数据库名 --tables

5.查看所有字段名【某个数据库某个表下的字段】

Sqlmap -u "url"  -D指定数据库名 -T指定表名 --columns

6,列出字段内容(数据)

Sqlmap -u "url" -D指定数据库名 -T指定表名 -C指定字段名 --dump

7,输出信息级别

Sqlmap -u "url" -v (1,2,3,4,5)

8,探测等级

Sqlmap -u "url" --level (1,2,3,4,5)

9,提交POST数据

1,--data

Sqlmap -u "url" --data "" --level 2

2,-r参数 获取请求数据

Sqlmap -r sqlmap.txt

10,指定cookie

--cookie

11,指定User-Agent

--User-Agent

--random-agent

-r

12,指定注入位置

1,用 * 指定注入位置

2,-p  指定参数

Sqlmap --purging 清除历史记录

防御

1,前端校验,后端过滤

2,预编译:如果sql语句进行了预编译,那么无论输入什么内容都不会改变语法结构

预编译使⽤ 占位符? 代替字段值的部分,将SQL语句先交由数据库预处理构建语法树

正因为在传⼊字段值之前,语法树已经构建完成,因此⽆论传⼊任何字段值,都⽆法再更改语法树的结构

⾄此,任何传⼊的值都只会被当做值来看待,不会再出现⾮预期的查询,这便是预编译能够防⽌SQL注⼊的根本原 因

3,限制数据库的权限和特权

4,使用安全狗等安全设备

恶意用户在提交查询请求的过程中将sql语句插入到请求内容中,

同时程序本身对用户过分信任

你可能感兴趣的:(数据库)