sqlmap

sqlmap是一款基于python编写的渗透测试工具,在sql检测和利用方面功能强大,支持多种数据库。

详细教程可以参考下面这篇文章:

sqlmap详细使用教程sqlmap *号星落.的博客-CSDN博客

使用场景

在学习SQL注入的过程中尽量少用sqlmap,自动化程度过高不利于对原理和基础知识的学习

但是在ctf比赛中,使用sqlmap可以更快地发现漏洞类型,节省时间

基础指令

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

连接-u后url的目标网站并进行扫描。

常用选项

获取数据库数据

--dbs:列出数据库的名称。
--tables:列出数据库中的所有表。
--columns:列出指定表中的所有字段。
--dump:导出指定表中的数据。

渗透测试中尽量不要使用—dump,这种获取数据的行为俗称脱库,即利用网站的漏洞,获取数据库中的全部用户信息。如果没有经过防御方同意,则脱库是一种违法行为。

-D 数据库名:指定进行枚举的数据库。

-T 表名:指定进行枚举的数据库表。

-C 字段名:指定进行枚举的数据库字段。

--tech:指定注入手段,例如使用--tech B是指定使用布尔盲注

绕过目标站点检测

--random-agent:使用随机的user-agent头

--delay=n:每次探测延时n秒(放置访问过快被ban)

--proxy="http://127.0.0.1:8080/":使用代理

--count:查看数据量

由于渗透测试中不方便使用--dump来获取数据,我们可以使用--count来查看数据量,进而确认是否为高价值数据库

获取目标服务器的操作控制权限

--keep-alive:建立长久的HTTP(S)连接 (与—proxy不兼容)

--is-dba:查询目标数据库管理系统当前用户是否为DBA,如果为true则可以直接尝试getshell

--users:枚举目标数据库管理系统所有的用户

--os-shell:获取与目标系统交互的shell

--priv-esc:数据库进程用户权限提升

测试等级和风险

--level=LEVEL:设置测试的等级(1-5,默认为1)lv2:cookie; lv3:user-agent,refere; lv5:host

在sqlmap/xml/payloads文件内可以看见各个level发送的payload

--risk=RISK :风险(1-4,默认1)升高风险等级会增加数据被篡改的风险。risk 2:基于事件的测试;risk 3:or语句的测试;risk 4:update的测试