sqlmap工具深入浅出
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的测试