一、Sqlmap是什么(形式因)?
二、Sqlmap能干什么(目的因)?
三、Sqlmap包含什么(质料因)和如何使用Sqlmap(方法论)?
(一)、Target
- -d 直接连目标后端接数据库,而不是使用sql注入漏洞,直接通过目标的侦听端口连接,当然需要有目标数据库的账号名和密码。例:-d “mysql://user:password@192.168.75.128:3389/databasename” --dbs 查询非常快。
- -u 指定一个url连接,url中必须有?xx=xx 才行(最常用的参数)例:-u “www.abc.com/index.php?id=1”
- -l 后接一个log文件,可以是burp等的代理的log文件,之后sqlmap会扫描log中的所有记录。例: -l log.txt
- -x 站点地图,提交给sql一个xml文件。
- -m 后接一个txt文件,文件中是多个url,sqlmap会自动化的检测其中的所有url。例: -m target.txt。
- -r 可以将一个post请求方式的数据包保存在一个txt中,sqlmap会通过post方式检测目标。例: -r post.txt
- -g 使用google引擎搜索类似的网址,并且多目标检测。例: -g “inurl:”.php?id=1"" \是转义
- -c 将使用的命令写在一个文件中,让sqlmap执行文件中的命令,我们可以用–save命令将配置写入文件。将来扫描oa系统和邮件系统可以使用不同的配置文件来扫描。
(二)、 Request
- --method=METHOD 指定是get方法还是post方法。例: --method=GET --method=POST
- --data=DATA 指明参数是哪些。例:-u “www.abc.com/index.php?id=1” --data=“name=1;pass=2”
- --param-del=PARA. 指明使用的变量分割符。例: -u “www.abc.com/index.php?id=1” --data=“name=1;pass=2” --param-del=";"
- --cookie=COOKIE 指定测试时使用的cookie,通常在一些需要登录的站点会使用。例: -u “www.abc.com/index.php?id=1” --cookie=“a=1;b=2”
- --cookie-del=COO… 和前面的 --param-del=PARA. 类似,就是指明分割cookie的字符。
- --load-cookies=L… 从包含Netscape / wget格式的cookie的文件中加载cookie。
- --drop-set-cookie 默认情况下,sqlmap是开启set-cookie功能的,也就是当收到一个含有set-cookie的http包的时候,下次sql会使用新的cookie进行发包,如果使用这条命令,就会关闭这个功能。在level>=2时会检测cookie注入。
- --user-agent=AGENT 指定一个user-agent的值进行测试。例: --user-agent=“aaaaaaa” 默认情况下,sqlmap会使用自己的user-agent进行测试(所以很多服务器发现user-agent是sqlmap的数据包直接认为是入侵),sqlmap自己的user-agent是:sqlmap/1.0-dev-nongit-201603020a89(http://sqlmap.org)
- --random-agent 使用随机user-agent进行测试。sqlmap有一个文件中储存了各种各样的user-agent,文件在sqlmap/txt/user-agent.txt 在level>=3时会检测user-agent注入。
- --host=HOST 指定http包中的host头参数。例: --host=“aaaaaa” 在level>=5时才会检查host头注入。\n是换行
- --referer=REFERER 指定http包中的refere字段。例: --referer=“aaaaa” 在level>=3时才会检测refere注入。
- -H --headers 额外的header头们,每个占一行。例:–headers=“host:www.a.com\nUser-Agent:yuangh”
- --headers=HEADERS 跟上边一样,再举一个例子: --headers=“Accept-Language: fr\nETag: 123” 注意所有构造http包的部分均区分大小写
- --auth-type=AUTH… 基于http身份验证的种类。例: --auth-type Basic/Digest/NTLM 一共有三种认证方式。
- --auth-cred=AUTH… 使用的认证,例: --auth-type Basic --auth-cred “user:password”
- --auth-file=AUTH… 使用.PEM文件中的认证。例:–auth-file=“AU.PEM” 少见。
- --ignore-code=IG… 无视http状态码。例: --ignore-code=401
- --ignore-proxy 无视本地的代理,有时候机器会有最基本的代理配置,在扫描本地网段的时候会很麻烦,使用这个参数可以忽略代理设置。
- --ignore-redirects 无视http重定向,比如登录成功会跳转到其他网页,可使用这个忽略掉。
- --ignore-timeouts 忽略连接超时。
- --proxy=PROXY 指定一个代理。例: --proxy=“127.0.0.1:8087” 使用GoAgent代理。
- --proxy-cred=PRO… 代理需要的认证。例: --proxy=“name:password”
- --proxy-file=PRO… 从一个文件加载代理的认证。
- --tor 使用tor匿名网络。