一 概述

SQL注入是针对一种数据库而言的,而不是针对网页语言。在任何使用了数据库查询环境下都可能存在。常见的数据库包括:MySQL、Oracle、Db2等。针对不同的数据库系统使用的一些函数会有所不同,不过从测试是否存在SQL注入的角度考虑,只需要进行几个最基本的判断语句就可以了。

由于SQL注入有可能造成信息泄漏,在严重情况下(根据使用的数据库而定)甚至可能造成数据修改、删除,从而导致业务中断。因此必须发现所有存在的注入点

二 说明

1、页面或者URL可能接受多个参数,需对每个参数都进行测试

2、如果客户端script对输入数据进行合法行校验,阻止非法数据,可以通过抓包拦截的方法修改输入数据,绕过客户端数据校验。

3、POST、AJAX以及隐藏域提交参数也需要测试,方法是通过抓包工具拦截HTTP请求,找到提交的参数并参照下面的方法修改参数值

三 手工测试方法

  1. 搜索型参数

http://127.0.0.1/sql.php?Parameter=James                  #正常查询数据
http://127.0.0.1/sql.php?Parameter=James'                 #页面异常或数据查询为空
http://127.0.0.1/sql.php?Parameter=James’and‘%’='         #正常查询数据
http://127.0.0.1/sql.php?Parameter=James'  and‘a%’='b     #查询数据为空或提示列表为空
  1. 数字型参数

http://127.0.0.1/sql.php?Parameter=10001                 #正常查询数据
http://127.0.0.1/sql.php?Parameter=10001'                #页面异常或数据查询为空
http://127.0.0.1/sql.php?Parameter=10001 and 1=1         #正常查询数据
http://127.0.0.1/sql.php?Parameter=10001 and 1=2         #查询数据为空或提示列表为空
  1. 字符型参数

http://127.0.0.1/sql.php?Parameter=James                 #正常查询数据
http://127.0.0.1/sql.php?Parameter=James'                #页面异常或数据查询为空
http://127.0.0.1/sql.php?Parameter=James’and‘1’=‘1       #正常查询数据
http://127.0.0.1/sql.php?Parameter=James'  and‘1’=‘2     #查询数据为空或提示列表为空
  1. 手工测试举例

前置条件:

  1. Web业务运行正常

  1. 已知待测目标URL,假设为GET http://test.pub.cn/api/v3/groups

  1. 待测目标存在参数输入,假设为groupid=45678

测试步骤:

  1. 观察参数的值value是否为数字型。如果是数字型进行数字型测试,否则跳到第4步进行字符型测试(例如如果出现a那说明是字符型,如果出现2则将其当做数字型测试)

  1. 将被测参数后加上测试语句“and 1=1”,即:地址栏中填入“http://test.pub.cn/api/v3/groups?groupid=45678 and 1=1”, 如果返回正确页面则进行下一步操作,否则是数字型测试,请跳到第4步。

  1. 将被测参数后加上测试语句“and 1=2”(这里以第n个参数为例),其他参数保持不变,即:地址栏中填入“http://test.pub.cn/api/v3/groups?groupid=45678 and 1=2”, 如果返回正确页面则进行下一步操作,否则该参数存在注入漏洞,完成测试

  1. 将被测参数后加上测试语句“’ and ‘1’=’1”,即:地址栏中填入“http://test.pub.cn/api/v3/groups?groupid=45678’ and ‘1’=’1”, 如果返回正确页面则进行下一步操作,否则该参数存在注入漏洞,完成测试

  1. 将被测参数后加上测试语句“’ and ‘1’=’2”,即:地址栏中填入“http://test.pub.cn/api/v3/groups?groupid=45678’ and ‘1’=’2”, 如果返回正确页面则不存在漏洞,否则该参数存在注入漏洞,完成测试

总结:如果参数后加的内容导致页面返回错误或者不可访问,那表明存在可注入点

四 sqlmap工具扫描

  1. 工具安装

  1. 本地安装python版本无需最新,2.7.16版本即可,下载Python官网地址:https://www.python.org/downloads/release

  1. Python下载安装操作方法:https://www.duote.com/tech/202112/221762.html

  1. 下载sqlmap官网地址:https://sqlmap.org/ 选择zip文件下载

  1. 基于上一步中下载zip文件至本地python安装目录,并将文件夹名称修改为sqlmap-->cmd命令行进入sqlmap目录下,执行sqlmap.py -h即可安装成功

  1. 工具测试举例

前置条件:

  1. Web业务运行正常

  1. 已知待测目标URL,假设为GET http://test.pub.cn/api/v3/groups

  1. 待测目标存在参数输入,假设为groupid=45678

测试步骤:

  1. 测试用机安装了sqlmap测试工具" "1、启动命令行,win+R cmd

  1. 进入到sqlmap.py的安装目录命令:cd F:\test\sqlmap

  1. 输入命令 Python -u “http://test.pub.cn/api/v3/groups?groupid=45678” --cookie=wps_sid=” --batch

  1. 回车执行扫描

  1. 观察输出结果"

  1. 工具常用命令

get接口:python sqlmap.py -u “URL” --cookie=“cookie” --batch

post接口:python sqlmap.py -u “URL” --cookie=“cookie” --data=“body” --batch

  1. 工具常用参数

基本选项:

-h 查看基本帮助

-hh 查看详细帮助

–version 查看sqlmap版本

-v LEVEL 扫描详细级别,LEVEL取值0-6,默认为1

目标选择

-u URL 指定测试URL

–url=URL 指定测试URL,同上

-m FILE 批量接口注入,FILE为本地保存了多个接口的.txt文件路径,一行一个URL

-l FILE 批量接口注入,FILE为本地保存了多个接口的文件路径,接口间用分隔符分割

-r FILE 批量接口注入,表示加载一个文件

请求设置

–data=DATA 指定post接口的body

–cookie=COOKIE 指定接口的cookie

–random-agent 使用随机选择的HTTP User-Agent标头值

–proxy=PROXY 指定接口的代理

–tor 使用Tor匿名网络

–check-tor 检查Tor是否正确使用

注入设置

-p TESTPARAMETER 指定测试接口的某几个参数

–dbms=DBMS 指定测试的数据库类型

枚举注入:

-a 检索所有内容

–current-user检索数据库当前用户

–current-db检索当前数据库

–passwords枚举数据库用户密码哈希值

–tables枚举数据库表

–columns枚举数据库表列

–schema枚举数据库架构

–dump查询出某个数据库下所有数据表的数据

–dump-all查询出所有数据库下所有数据表的数据

-D DB 查询指定的数据库的数据

-T TBL 查询数据库中指定的表数据

-C-要枚举的COL 查询数据库中指定的表列数据

其他设置:

–batch 自动选择默认选项,不需要用户输入

–smart 智能判断选择,只有在积极启发式的情况下进行彻底测试

原文链接:https://blog.csdn.net/weixin_39740094/article/details/103511476

  1. 常见结果分析

参考:https://blog.csdn.net/qq_51524329/article/details/121720816

安全测试-SQL注入相关推荐

  1. 渗透测试SQL注入——Sqlilabs关卡详解

    目录 报错函数floor的利用 利用select into outfile写一句话木马 利用load_file 读敏感文件 利用sqlmap探测 sql盲注 get基于时间的盲注应用 post基于时间 ...

  2. Web安全性测试—SQL注入

    Web安全性测试-SQL注入 因为要对网站安全性进行测试,所以,学习了一些sql注入的知识. 在网上看一些sql注入的东东,于是想到了对网站的输入框进行一些测试,本来是想在输入框中输入<scri ...

  3. 渗透测试——sql注入进阶/基于时间的盲注/一看就会/

    目录 一.注入点判断 注入类型 SQL注入的类型 二.基于时间的时间盲注 什么是时间盲注 sleep()函数 常用函数 三.bWAPP基于时间的盲注实战 一.注入点判断 1.输入一个单引号',因为语句 ...

  4. 渗透测试-SQL注入之Fuzz绕过WAF

    WAF绕过原理之Fuzz绕过 文章目录 WAF绕过原理之Fuzz绕过 前言 一.什么是Fuzz 二.利用Fuzz绕过WAF获取数据库信息 1.Fuzz绕过方法 2.利用Fuzz绕过WAF获取数据库信息 ...

  5. web测试-sql注入漏洞

    1.web程序三层结构 2.什么是sql注入 SQL注入 是将Web页面的原URL.表单域或数据包输入的参数,修改拼接成SQL语句,传递给Web服务器,进而传给数据库服务器以执行数据库命令. 注入攻击 ...

  6. 渗透测试-SQL注入之sqlmap的使用方法及实战案例

    SQL注入之sqlmap的使用方法及实战案例 文章目录 SQL注入之sqlmap的使用方法及实战案例 前言 一.sqlmap的使用方法 查库,表,列,以及相关的字段的信息 万能密码汇总 判断是否为字符 ...

  7. kali linux扫描sql注入,Kali Linux系统利用DVWA靶场进测试SQL注入漏洞:

    手工盲注:手工盲注分为基于布尔的盲注.基于时间的盲注以及基于报错的盲注,手工盲注步骤:1.判断是否存在注入,注入是字符型还是数字型;2.猜解当前数据库名;3.猜解数据库中表名;4.猜解表中的字段名;5 ...

  8. 84.网络安全渗透测试—[SQL注入篇23]—[高级注入技巧-dnslog无回显注入]

    我认为,无论是学习安全还是从事安全的人,多多少少都有些许的情怀和使命感!!! 文章目录 一.高级注入技巧 dnslog无回显注入 1.原理 2.dnslog平台 3.MySQL dnslog无回显注入 ...

  9. 77.网络安全渗透测试—[SQL注入篇16]—[SQLSERVER+ASP-延时注入]

    我认为,无论是学习安全还是从事安全的人,多多少少都有些许的情怀和使命感!!! 文章目录 一.SQLSERVER+ASP 延时注入 1.简介 2.判断注入 3.猜解长度.个数.字符 4.以上总结:`12 ...

最新文章

  1. pytorch之expand,gather,squeeze,sum,contiguous,softmax,max,argmax
  2. 【HDU】1251统计难题 (字典树:二维数组,结构体数组,链表,map)
  3. 微信正在用的深度学习框架开源!支持稀疏张量,基于C++开发
  4. 利用python+seleniumUI自动化登录获取cookie后再去测试接口,今天终于搞定了
  5. bzoj3524 [Poi2014]Couriers
  6. react native仿微信性别选择-自定义弹出框
  7. ORA-02291: 违反完整约束条件 …… - 未找到父项关键字
  8. yum 快速安装 LAMP
  9. C++ 获取类成员虚函数地址
  10. java day15 【Map】
  11. java web相对路径_java(Web)中相对路径,绝对路径问题总结
  12. Luogu2730 魔板 Magic Squares
  13. 使用sklearn不同方法在digits手写数字数据集上聚类并用matplotlib呈现
  14. 【最全攻略】拼多多商家自研系统接入流程
  15. 经典laravel后台管理系统
  16. 学习笔记:微波遥感反演土壤水分——理论模型和经验模型(1)
  17. 计算机管理显示磁盘未知,磁盘未知,未初始化或未分配问题的解决方案
  18. java robot 游戏_JAVA制作游戏脚本(1)---Robot机器人
  19. 微信js 已经填写JS接口安全域名了,仍然报invalid url domain
  20. 用anaconda下载安装pytorch1.8.1+cudatoolkit11.1

热门文章

  1. Matlab【路径规划】—— 无人机药品配送路线最优化
  2. 多因子选股Alpha策略
  3. 在本地实现远程登录阿里云服务器的前提条件
  4. 可视化的Keil工程配置模板,一招提高单片机开发效率
  5. 3、jQuery插件之datetimepicker时间插件
  6. 利用ffmepg下载在线视频文件
  7. 摩根斯丹利 上海java开发_美团上海Java实习(已offer)面经(还没写完,转载)...
  8. 轻松学习Java设计模式之责任链模式
  9. PyTorch 打印模型结构、输出维度和参数信息(torchsummary)
  10. ospf卡在活动状态问题