sqlmap 是一个开源的渗透测试工具,专门用于自动化检测和利用SQL注入漏洞,以及对数据库服务器进行数据获取和访问操作系统文件系统
1、首先下载SQLmap包,直接解压就可以使用了
下载地址:sqlmap: automatic SQL injection and database takeover tool
2、我们可以通过py sqlmap.py -hh查看命令参数
3、我们用DVWA靶场进行SQLmap的使用。
python sqlmap.py -u "http://127.0.0.1/DVWA/vulnerabilities/sqli/?id=1\&Submit=Submit#" --cookie "PHPSESSID=54qti04i6bne8gk2bjhkojhmge; security=low"
下面是返回的结果,告诉我们有SQL注入漏洞
python sqlmap.py -u "http://127.0.0.1/DVWA/vulnerabilities/sqli/?id=1\&Submit=Submit#" --cookie "PHPSESSID=54qti04i6bne8gk2bjhkojhmge; security=low" --current-db
通过这个命令可以获取当前的DB
python sqlmap.py -u "http://127.0.0.1/DVWA/vulnerabilities/sqli/?id=1\&Submit=Submit#" --cookie "PHPSESSID=54qti04i6bne8gk2bjhkojhmge; security=low" -D "dvwa" --dump-all
通过这个命令可以获取到dvwa数据库里面所有的信息
其他参数说明:
目标(Target)
- -u URL 或 --url=URL:目标URL(例如 "Salesforce Einstein 1 Platform for Application Development - Salesforce.com US")。
- -d DIRECT:直接数据库连接字符串。
- -l LOGFILE:从Burp或WebScarab代理日志文件解析目标。
- -m BULKFILE:扫描文本文件中给定的多个目标。
- -r REQUESTFILE:从文件加载HTTP请求。
- -g GOOGLEDORK:处理Google dork结果作为目标URL。
- -c CONFIGFILE:从配置INI文件加载选项。
请求(Request)
- -A AGENT 或 --user-agent=AGENT:HTTP User-Agent头值。
- -H HEADER 或 --header=HEADER:额外的头(例如 "X-Forwarded-For: 127.0.0.1")。
- --method=METHOD:强制使用给定的HTTP方法(例如 PUT)。
- --data=DATA:通过POST发送的数据字符串(例如 "id=1")。
- --param-del=PARAM_DEL:用于分割参数值的字符(例如 &)。
- --cookie=COOKIE:HTTP Cookie头值(例如 "PHPSESSID=a8d127e..")。
- --cookie-del=COOKIE_DEL:用于分割cookie值的字符(例如 ;)。
- --live-cookies=LIVE_COOKIES:用于加载最新值的实时cookies文件。
- --drop-set-cookie:忽略响应中的Set-Cookie头。
- --mobile:通过HTTP User-Agent头模拟智能手机。
- --random-agent:使用随机选择的HTTP User-Agent头值。
- --host=HOST:HTTP Host头值。
- --referer=REFERER:HTTP Referer头值。
- --headers=HEADERS:额外的头(例如 "Accept-Language: fr\nETag: 123")。
- --auth-type=AUTH_TYPE:HTTP认证类型(Basic, Digest, Bearer, ...)。
- --auth-cred=AUTH_CRED:HTTP认证凭据(用户名:密码)。
- --auth-file=AUTH_FILE:HTTP认证PEM证书/私钥文件。
- --abort-code=ABORT_CODE:在(问题)HTTP错误代码上中止(例如 401)。
- --ignore-code=IGNORE_CODE:忽略(问题)HTTP错误代码(例如 401)。
- --ignore-proxy:忽略系统默认代理设置。
- --ignore-redirects:忽略重定向尝试。
- --ignore-timeouts:忽略连接超时。
- --proxy=PROXY:使用代理连接到目标URL。
- --proxy-cred=PROXY_CRED:代理认证凭据(用户名:密码)。
- --proxy-file=PROXY_FILE:从文件加载代理列表。
- --proxy-freq=PROXY_FREQ:从给定列表更改代理之间的请求。
- --tor:使用Tor匿名网络。
- --tor-port=TOR_PORT:设置Tor代理端口,而不是默认端口。
- --tor-type=TOR_TYPE:设置Tor代理类型(HTTP, SOCKS4 或 SOCKS5(默认))。
- --check-tor:检查Tor是否被正确使用。
- --delay=DELAY:每个HTTP请求之间的延迟(秒)。
- --timeout=TIMEOUT:连接超时前的等待时间(默认30秒)。
- --retries=RETRIES:连接超时时的重试次数(默认3次)。
- --retry-on=RETRY_ON:在正则表达式匹配内容时重试请求(例如 "drop")。
- --randomize=RPARAM:为给定的参数(s)随机改变值。
- --safe-url=SAFE_URL:在测试期间频繁访问的URL地址。
- --safe-post=SAFE_POST:发送到安全URL的POST数据。
- --safe-req=SAFE_REQ:从文件加载安全的HTTP请求。
- --safe-freq=SAFE_FREQ:访问安全URL之间的常规请求。
- --skip-urlencode:跳过负载数据的URL编码。
- --csrf-token=CSRF_TOKEN:用于保存反CSRF令牌的参数。
- --csrf-url=CSRF_URL:用于提取反CSRF令牌的访问URL地址。
- --csrf-method=CSRF_METHOD:在访问反CSRF令牌页面期间使用的HTTP方法。
- --csrf-data=CSRF_DATA:在访问反CSRF令牌页面期间发送的POST数据。
- --csrf-retries=CSRF_RETRIES:反CSRF令牌检索的重试次数(默认0次)。
- --force-ssl:强制使用SSL/HTTPS。
- --chunked:使用HTTP块传输编码(POST)请求。
- --hpp:使用HTTP参数污染方法。
- --eval=EVALCODE:在请求之前评估提供的Python代码(例如 "import hashlib;id2=hashlib.md5(id).hexdigest()")。
优化(Optimization)
- -o:打开所有优化开关。
- --predict-output:预测常见查询的输出。
- --keep-alive:使用持久的HTTP(s)连接。
- --null-connection:不获取实际HTTP响应体的情况下检索页面长度。
- --threads=THREADS:最大并发HTTP(s)请求数(默认为1)。
注入(Injection)
- -p TESTPARAMETER:可测试的参数(s)。
- --skip=SKIP:跳过给定参数(s)的测试。
- --skip-static:跳过测试似乎不动态的参数。
- --param-exclude=PARAM_EXCLUDE:排除测试的参数的正则表达式(例如 "ses")。
- --param-filter=PARAM_FILTER:按位置选择可测试的参数(例如 "POST")。
- --dbms=DBMS:强制后端DBMS为提供的值。
- --dbms-cred=DBMS_CRED:DBMS认证凭据(用户名:密码)。
- --os=OS:强制后端DBMS操作系统为提供的值。
- --invalid-bignum:使用大数字使值无效。
- --invalid-logical:使用逻辑操作使值无效。
- --invalid-string:使用随机字符串使值无效。
- --no-cast:关闭负载转换机制。
- --no-escape:关闭字符串转义机制。
- --prefix=PREFIX:注入负载前缀字符串。
- --suffix=SUFFIX:注入负载后缀字符串。
- --tamper=TAMPER:使用给定脚本篡改注入数据。
检测(Detection)
- --level=LEVEL:要执行的测试级别(1-5,默认为1)。
- --risk=RISK:要执行的测试风险(1-3,默认为1)。
- --string=STRING:当查询评估为真时匹配的字符串。
- --not-string=NOT_STRING:当查询评估为假时匹配的字符串。
- --regexp=REGEXP:当查询评估为真时匹配的正则表达式。
- --code=CODE:当查询评估为真时匹配的HTTP代码。
- --smart:仅在有积极启发时执行彻底的测试。
- --text-only:仅基于文本内容比较页面。
- --titles:仅基于它们的标题比较页面。
技术(Techniques)
- --technique=TECHNIQUE:要使用的SQL注入技术(默认为"BEUSTQ")。
- --time-sec=TIME_SEC:延迟DBMS响应的时间(默认为5秒)。
- --union-cols=UNION_COLS:测试UNION查询SQL注入的列范围。
- --union-char=UNION_CHAR:用于暴力破解列数的字符。
- --union-from=UNION_FROM:在UNION查询SQL注入的FROM部分使用的表。
- --union-values=UNION_VALUES:用于UNION查询SQL注入的列值。
- --dns-domain=DNS_DOMAIN:用于DNS外泄攻击的域名。
- --second-url=SECOND_URL:搜索第二阶响应的结果页面URL。
- --second-req=SECOND_REQ:从文件加载第二阶HTTP请求。
指纹(Fingerprint)
- -f 或 --fingerprint:执行广泛的DBMS版本指纹。
枚举(Enumeration)
- -a 或 --all:检索所有信息。
- -b 或 --banner:检索DBMS横幅。
- --current-user:检索DBMS当前用户。
- --current-db:检索DBMS当前数据库。
- --hostname:检索DBMS服务器主机名。
- --is-dba:检测DBMS当前用户是否为DB
- --users:枚举DBMS用户。
- --passwords:枚举DBMS用户的密码哈希。
- --privileges:枚举DBMS用户的权限。
- --roles:枚举DBMS用户的角色。
- --dbs:枚举DBMS数据库。
- --tables:枚举DBMS数据库表。
- --columns:枚举DBMS数据库表列。
- --schema:枚举DBMS架构。
- --count:检索表(s)的条目数量。
- --dump:转储DBMS数据库表条目。
- --dump-all:转储所有DBMS数据库表条目。
- --search:搜索列(s),表(s)和/或数据库名称(s)。
- --comments:在枚举期间检查DBMS注释。
- --statements:检索在DBMS上运行的SQL语句。
- -D DB:要枚举的DBMS数据库。
- -T TBL:要枚举的DBMS数据库表(s)。
- -C COL:要枚举的DBMS数据库表列(s)。
- -X EXCLUDE:不枚举的DBMS数据库标识符。
- -U USER:要枚举的DBMS用户。
- --exclude-sysdbs:在枚举表时排除DBMS系统数据库。
- --pivot-column=PIVOT_COLUMN:枢轴列名称。
- --where=DUMP_WHERE:在表转储时使用WHERE条件。
- --start=LIMIT_START:要检索的第一个转储表条目。
- --stop=LIMIT_STOP:要检索的最后一个转储表条目。
- --first=FIRST_CHAR:要检索的第一个查询输出单词字符。
- --last=LAST_CHAR:要检索的最后一个查询输出单词字符。
- --sql-query=SQL_QUERY:要执行的SQL语句。
- --sql-shell:提示交互式SQL shell。
- --sql-file=SQL_FILE:从给定文件(s)执行SQL语句。
暴力破解(Brute force)
- --common-tables:检查常见表的存在。
- --common-columns:检查常见列的存在。
- --common-files:检查常见文件的存在。
用户定义函数注入(User-defined function injection)
- --udf-inject:注入自定义用户定义的函数。
- --shared-lib=SHARED_LIB:共享库的本地路径。
文件系统访问(File system access)
- --file-read=FILE:从后端DBMS文件系统读取文件。
- --file-write=FILE:在后端DBMS文件系统上写入本地文件。
- --file-dest=FILE_DEST:写入的后端DBMS绝对文件路径。
操作系统访问(Operating system access)
- --os-cmd=OS_CMD:执行操作系统命令。
- --os-shell:提示交互式操作系统shell。
- --os-pwn:提示OOB shell,Meterpreter或VNC。
- --os-smbrelay:一键提示OOB shell,Meterpreter或VNC。
- --os-bof:存储过程缓冲区溢出利用。
- --priv-esc:数据库进程用户权限提升。
- --msf-path=MSF_PATH:安装Metasploit Framework的本地路径。
- --tmp-path=TMP_PATH:远程临时文件目录的绝对路径。
Windows注册表访问(Windows registry access)
- --reg-read:读取Windows注册表键值。
- --reg-add:写入Windows注册表键值数据。
- --reg-del:删除Windows注册表键值。
- --reg-key=REG_KEY:Windows注册表键。
- --reg-value=REG_VAL:Windows注册表键值。
- --reg-data=REG_DATA:Windows注册表键值数据。
- --reg-type=REG_TYPE:Windows注册表键值类型。
通用(General)
- -s SESSION_FILE:从存储的(.sqlite)文件加载会话。
- -t TRAFFIC_FILE:将所有HTTP流量记录到文本文件中。
- --abort-on-empty:在空结果上中止数据检索。
- --answers=ANSWERS:设置预定义答案(例如 "quit=N,follow=N")。
- --base64=BASE64_PARAMS:包含Base64编码数据的参数(s)。
- --base64-safe:使用URL和文件名安全的Base64字母表(RFC 4648)。
- --batch:永远不要请求用户输入,使用默认行为。
- --binary-fields=BINARY_FIELDS:具有二进制值的结果字段(例如 "digest")。
- --check-internet:在评估目标之前检查Internet连接。
- --cleanup:从DBMS清理特定的UDF和表。
- --crawl=CRAWL_DEPTH:从目标URL开始爬取网站。
- --crawl-exclude=CRAWL_EXCLUDE:排除爬取的页面的正则表达式(例如 "logout")。
- --csv-del=CSV_DEL:CSV输出中使用的分隔符(默认为",")。
- --charset=CHARSET:盲SQL注入字符集(例如 "0123456789abcdef")。
- --dump-file=DUMP_FILE:将转储的数据存储到自定义文件中。
- --dump-format=DUMP_FORMAT:转储数据的格式(CSV(默认),HTML或SQLITE)。
- --encoding=ENCODING:用于数据检索的字符编码(例如 GBK)。
- --eta:为每个输出显示预计到达时间。
- --flush-session:刷新当前目标的会话文件。
- --forms:解析并测试目标URL上的表单。
- --fresh-queries:忽略会话文件中存储的查询结果。
- --gpage=GOOGLE_PAGE:使用指定页码的Google dork结果。
- --har=HAR_FILE:将所有HTTP流量记录到HAR文件中。
- --hex:在数据检索期间使用十六进制转换。
- --output-dir=OUTPUT_DIR:自定义输出目录路径。
- --parse-errors:解析并显示响应中的DBMS错误消息。
- --preprocess=PREPROCESS:使用给定脚本进行预处理(请求)。
- --postprocess=POSTPROCESS:使用给定脚本进行后处理(响应)。
- --repair:重新转储具有未知字符标记 (?) 的条目。
- --save=SAVE_CONFIG:将选项保存到配置INI文件中。
- --scope=SCOPE:用于过滤目标的正则表达式。
- --skip-heuristics:跳过漏洞的启发式检测。
- --skip-waf:跳过WAF/IPS保护的启发式检测。
- --table-prefix=TABLE_PREFIX:用于临时表的前缀(默认:"sqlmap")。
- --test-filter=TEST_FILTER:按负载和/或标题选择测试(例如 ROW)。
- --test-skip=TEST_SKIP:按负载和/或标题跳过测试(例如 BENCHMARK)。
- --time-limit=TIME_LIMIT:运行时限(秒)(例如 3600)。
- --unsafe-naming:禁用DBMS标识符的转义(例如 "user")。
- --web-root=WEB_ROOT:Web服务器文档根目录(例如 "/var/www")。
杂项(Miscellaneous)
- -z MNEMONICS:使用简短的助记符(例如 "flu,bat,ban,tec=EU")。
- --alert=ALERT:在发现SQL注入时运行主机操作系统命令。
- --beep:在问题和/或发现漏洞时发出蜂鸣声。
- --dependencies:检查缺失的(可选)sqlmap依赖项。
- --disable-coloring:禁用控制台输出着色。
- --list-tampers:显示可用篡改脚本的列表。
- --no-logging:禁用记录到文件。
- --offline:以离线模式工作(仅使用会话数据)。
- --purge:安全地移除sqlmap数据目录中的所有内容。
- --results-file=RESULTS_FILE:多个目标模式中CSV结果文件的位置。
- --shell:提示交互式sqlmap shell。
- --tmp-dir=TMP_DIR:存储临时文件的本地目录。
- --unstable:调整选项以适应不稳定的连接。
- --update:更新sqlmap。
- --wizard:为初学者提供的简单向导界面。