常见寻找 SQL 注入漏洞方法总结

一、借助推理进行测试

识别 SOL 注入漏洞有一种简单的规则:通过发送意外数据来触发异常。该规则包括如下含义:

1. 识别 Web 应用上所有的数据输入。

2. 了解哪种类型的请求会触发异常。

3. 检测服务器响应中的异常。

二、通过参数判断

假设你正在访问一个网站,其 URL 如下

http://sqli-labs:8989/Less-1/?id=1

http://sqli-labs:8989/Less-1/?id=2

这个页面收到一个名为 id 的参数,该页面似乎是将 id 参数作为查询条件,并根据后台数据库的查询结果来显示 。

现在开始手动修改参数值,将其改为网站未预料的值。如:'

http://sqli-labs:8989/Less-1/?id=1'

这个报错是由于SQL语法错误导致的。错误信息中指出了错误发生在语句的末尾,接近 '1' LIMIT 0,1 这部分。

至此可以判断该页面存在 SQL 注入漏洞。

三、永真与永假测试

假如这是一个网站查询的 SQL 语句

SELECT *
FROM products
WHERE category='[attacker's control]'

注入 attacker'很明显会产生错误,因为末尾增加了多余的单引号,这导致该 SQL语句出错,但是可以尝试不同的风格,例如 ’bike‘ or '1'='1 

SELECT *
FROM products
WHERE category='bikes' OR '1'='1' /*总是为真,返回所有行 */

在WHERE子句中,使用了一个条件:category='bikes' OR '1'='1'。这个条件的目的是返回所有category为'bikes'的记录,同时也使用了OR逻辑运算符和'1'='1'条件。'1'='1'始终为真,因此这个条件始终成立,导致查询结果返回了所有记录,而不仅仅是category为'bikes'的记录。

注入永真条件有个缺点:查询结果会包含表中的所有记录。如果存在上百万条记录,那么查询执行的时间会很长,而且会耗费数据库和Web服务器的大量资源。该问题的解决办法是:注入一些不会对最终结果产生影响的内容,比如 bikes' or '1'='2。 

SELECT *
FROM products
WHERE category='bikes' OR 1'='2'

1 不等于 2,该条件为假。所以只会返回 bikes 的记录。

对于这种情况,还可以进行另外一种测试:注入一个永假语句。为实现该目的,我们发送个不会产生结果的值。比如 bikes 'AND '1'= '2

SELECT *
FROM products
WHERE category='bikes' AND '1'='2'

上述语句不会返回任何结果,因为条件有一个不成立。如果还是返回了结果,应该是使用了 UNION 关键字,咱们只修改了其中一个部分

四、SQL 盲注

Victim 公司允许用户通过页面上的身份验证表单登录到 Web 站点。身份验证表单要求用户输入用户名和口令。如果任意地输入用户名和口令,那么结果页面会显示“Invalid username or password”消息。这是可以预料到的结果。但如果输入 user' or '1'=1'作为用户名,就会显示如图所示错误

进一步讲,username 字段很容易受到攻击

发现这种情况后,可注入一个永假条件并检查返回值的差异,这对进一步核实username字段是否易受SOL注入攻击来说非常有用

做完永假测试后可以确认 username 字段存在 SQL 注入漏洞 

SQL盲注是一种 SOL注入漏洞,攻击者可以操纵 SOL语句,应用会针对真假条件返回不同的值。但是攻击者无法检索查询结果。 

由于 SQL 盲注漏洞非常耗时且需要向 Web 服务发送很多请求,因而要想利用该漏洞,就需要采用自动的技术。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/518216.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

NoSQL之Redis配置

文章目录 NoSQL之Redis配置一、关系数据库和非关系数据库1、关系型数据库2、非关系型数据库3、非关系型数据库产生背景4、关系型数据库和非关系型数据库的区别4.1 数据存储方式不同4.2 扩展方式不同4.3 对事务性的支持不同 5、总结5.1 关系型数据库5.2 非关系型数据库 二、Redi…

Spring-IoC 基于注解

基于xml方法见:http://t.csdnimg.cn/dir8j 注解是代码中的一种特殊标记,可以在编译、类加载和运行时被读取,执行相应的处理,简化 Spring的 XML配置。 格式:注解(属性1"属性值1",...) 可以加在类上…

大数据基础设施搭建 - Spark

文章目录 一、解压压缩包二、修改配置文件conf/spark-env.sh三、测试提交Spark任务四、Spark on Hive配置4.1 创建hive-site.xml(spark/conf目录)4.2 查看hive的hive-site.xml配置与3.1配置的是否一致4.3 测试SparkSQL4.3.1 启动SparkSQL客户端&#xff…

【JAVA】JAVA快速入门(长期维护)

下面是java的一些入门基础知识,有需要借鉴即可。 课程:B站黑马程序员,JAVA入门LINK 一、初识JAVA 1.java概述 概念:java是由sun公司研发,在2009年被oracle收购,祖师爷詹姆斯高斯林,是一种高级…

Copilot for Microsoft365使用心得

从去年3月份的发布到上周获得的体验名额,关注copilot已经超过了一年, 实际体验了一周觉得微软这款产品真的挺厉害的,至少在我认知里面确实可以减少很多的工作量,在此感谢陈老师公众号的体验卡的活动(活动真实有效&…

101. 对称二叉树及同类题

101. 对称二叉树 力扣题目链接(opens new window) 给定一个二叉树,检查它是否是镜像对称的。 递归 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNo…

【青龙脚本】星抖

脚本出处:Huaji 功能:完成日常任务 每天运行1次即可 变量名:yuanshen_xddj 手机登录软件后,抓包,搜索Authorization里面的参数 注意:每天12小时都要进软件领取金块,超过12小时就会停止产出 参数设置都在脚本注释里,懂的都懂&a…

Redis从入门到精通(五)Redis实战(二)商户查询缓存

↑↑↑请在文章头部下载测试项目原代码↑↑↑ 文章目录 前言4.2 商户查询缓存4.2.1 缓存介绍4.2.2 查询商户信息的传统做法4.2.2.1 接口文档4.2.2.2 代码实现4.2.2.3 功能测试 4.2.3 查询商户信息添加Redis缓存4.2.3.1 逻辑分析4.2.3.2 代码实现4.2.3.3 功能测试 4.2.3 数据一致…

传输层 --- UDP

目录 1. 传输层是什么呢? 2. 再谈端口号 2.1. 端口号是什么 2.2. 协议号是什么 2.3. 认识知名端口号 2.4. 端口号的相关问题 2.4.1. 一个进程可以绑定多个端口号吗? 2.4.2. 一个端口号可以被多个进程绑定吗? 2.4.3. 为什么不使用P…

向量数据库 | AI时代的航道灯塔

向量数据库 | AI时代的航道灯塔 什么是向量检索服务拍照搜商品 你使用过向量数据库吗?使用体验?为什么向量数据库能借由大模型引起众多关注向量数据库在当前AI热潮中是昙花一现,还是未来AI时代的航道灯塔? 今天的话题主要是讨论向…

python-基础篇-字符串、列表、元祖、字典-列表

文章目录 2.3.2列表2.3.2.1列表介绍2.3.2.1.1列表的格式2.3.2.1.2打印列表 2.3.2.2列表的增删改查2.3.2.2.1列表的遍历2.3.2.2.1.1使用for循环2.3.2.2.1.2使用while循环 2.3.2.2.2添加元素("增"append, extend, insert)2.3.2.2.2.1append 2.3.2.2.2.2extend2.3.2.2.2…

博客搭建(hexo+github)

简介 搭建完成网站的如下所示 https://polarday.top/ 使用github托管博客,完全免费不需要购买服务器 博客框架:hexo hexo主题:ICARUS 图床:githubPicGo 编辑:vscode 为什么使用hexo框架?因为hexo是静态框…

新手开抖店:选品过后如何有效对接达人?这些方法100%有效!

哈喽~我是电商月月 要说做抖音小店最主要的是什么?那当然是找品了 那出单最快的方法是什么?无疑是达人带货了! 但新手店铺没销量,没体验分,没好评怎么能让达人同意帮我们带货呢? 方法其实很简单&#x…

上位机图像处理和嵌入式模块部署(qmacvisual之plc通信)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 传统的非标自动化设备当中,plc发挥了很大的作用。这里面如何对这些电机和机构进行控制,大多数场景下用的就是plc设备了。目…

常用的AI绘画自动生成器介绍

AI绘画自动生成器是一种利用人工智能技术生成图像的工具。它可以根据用户输入的文本描述自动生成相应的图像。目前,有几种流行的AI绘画自动生成器,包括: 1. **DALL-E 2** DALL-E 2是由OpenAI开发的AI绘画生成器,它可以根据用户输入的自然语言描述生成高质量的图像。DALL-E 2使…

上位机图像处理和嵌入式模块部署(qmacvisual之tcp服务器端)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 上面一篇,我们谈到了tcp客户端,另外一种连接方法就是tcp服务器端。事实上,对于第三方系统,大多数情…

解析Apache Kafka:在大数据体系中的基本概念和核心组件

关联阅读博客文章:探讨在大数据体系中API的通信机制与工作原理 关联阅读博客文章:深入解析大数据体系中的ETL工作原理及常见组件 关联阅读博客文章:深度剖析:计算机集群在大数据体系中的关键角色和技术要点 关联阅读博客文章&a…

账号和权限管理

一、账号 1.用户的类型 1.超级管理:权限最高的用户 2.普通用户:权限受到限制的用户 3.程序用户:不是给人登录使用的,给程序使用的,这些用户一般不允许登录到系统,一般是为了支持程序运行(超级管理员和普…

C语言中的结构体:揭秘数据的魔法盒

前言 在C语言的广阔天地中,结构体无疑是一颗璀璨的明珠。它就像是一个魔法盒,能够容纳各种不同类型的数据,并按我们的意愿进行组合和排列。那么,这个魔法盒究竟有何神奇之处呢?让我们一探究竟。 一、结构体的诞生&…

SV学习笔记(七)

类型转换 写在前面 类型转换可以分为 静态转换和动态转换 。静态转换即需要在转换的表达式前 加上单引号 即可,该方式并不会对转换值做检查。如果发生转换失败,我们也无从得知。动态转换即需要使用 系统函数$cast(tgt, src) 做转换。静态转…