SQLmap使用

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:为初学者提供的简单向导界面。
相关推荐
风飘红技术中心1 个月前
2024-网鼎杯第二次模拟练习-web02
sql·web·ctf·sql注入·网鼎杯
ccc_9wy1 个月前
sql-labs靶场第十六关测试报告
数据库·sql·web安全·网络安全·sql注入·sqlmap·盲注
ccc_9wy1 个月前
sql-labs靶场第十五关测试报告
数据库·sql·web安全·网络安全·sql注入·sqlmap·布尔盲注
ccc_9wy1 个月前
sql-labs靶场第十四关测试报告
数据库·sql·web安全·网络安全·sql注入·sqlmap·报错注入
南暮思鸢1 个月前
CTFHUB技能树之SQL——Refer注入
数据库·经验分享·sql·sqlmap·burpsuite·ctfhub技能树·referer注入
南暮思鸢1 个月前
CTFHUB技能树之SQL——Cookie注入
数据库·sql·web安全·网络安全·sqlmap·ctfhub技能树·cookie注入
穿鞋子泡脚1 个月前
关于sql注入预编译的思考
数据库·sql·web安全·漏洞挖掘·sql注入
癞皮狗不赖皮2 个月前
WEB攻防- Oracle基本注入
数据库·oracle·sql注入
小小工匠2 个月前
加密与安全_三种常见的注入攻击
安全·sql注入·xss攻击·代码注入
我能突破限制.2 个月前
渗透测试(第三章SQL注入实战上)
网络安全·sql注入·报错注入·联合查询注入