一、前置准备
安装python
下载地址:Download Python | Python.org
安装完成后记得配置环境变量
下载SQLMAP工具包
下载地址:sqlmap: automatic SQL injection and database takeover tool
安装完成后记得配置环境变量
二、验证是否安装成功
步骤1
找到sqlmap最后一层路径输入cmd打开终端命令窗口
步骤2
输入命令:sqlmap
如果有报错则输入:sqlmap.py
还有报错时输入:python sqlmap.py
报错原因:可能是安装了pycharm工具
三、SQLMAP通用功能
1、五种 SQL 注入技术
-
基于布尔的盲注
1、寻找注入点
URL参数: GET请求的查询字符串 product.jsp?id=123,123就是注入点
表单输入:POST请求中的表单字段,最典型的就是 用户登录框、搜索框、各种信息提交表单
2、构造payload(简单到复杂的Payload进行试探)
假设后端拼接逻辑如下:
-- 这是一个简化的、不安全的SQL语句示例
String sql = "SELECT * FROM users WHERE username = '" + username_input + "' AND password = '" + password_input + "';";
比如登录框:用户名输入admin(用户是真实存在)
输入一个错误密码
预期:用户密码不存在
后端SQL则为:SELECT * FROM users WHERE username = 'admin' AND password = 'any_wrong_password';
payload 1:注入一个恒为真的条件- 用户名框输入'admin'AND '1'='1'
密码框随便输入错误的密码
此时预期:前面为真,密码部分为假AND连接,SQL查询同样会返回0条记录,存在SQL注入:
Payload 2:注入一个恒为假的条件- 用户名框输入'admin'AND '1'='2'
如果返回:用户不存在,说明注入成功
-
基于时间的盲注
Payload: admin' AND (SELECT SLEEP(5)),点击登录看服务器是否有延迟,如有延迟则存在sql注入
-
基于错误的盲注
-
UNION 查询、堆叠查询
-
基于boot的盲注
2、支持直连数据库
四、SQLMAP常用参数
1、指定目标url
python sqlmap.py - u
2、检测post请求注入
python sqlmap.py --data="参数=值"
3、列出所有数据库
python sqlmap.py --dbs
4、指定数据库
python sqlmap.py - d 数据库类型
5、指定表名
python sqlmap.py - t 表名
6、导出表中数据
python sqlmap.py - dump
五、SQLMAP常用命令
1、连接数据库
python sqlmap.py - d "数据库类型://用户名:密码@IP:数据库端口号/数据库名"
sqlmap更新命令:
python sqlmap.py --update
2、连接目标网址修改参数
请求方式为get:
python sqlmap.py -u "http://地址?参数"
请求方式为:post
python sqlmap.py -u "http://地址 --data="参数1=值1&参数2=值2"
指定数据库类型:
python sqlmap.py -u "http://地址?参数" --dbms=MySQL
1294

被折叠的 条评论
为什么被折叠?



