CTFWeb篇10-MySQL注入

如何发现SQL注入漏洞

使用注释符

  • 在注入时使用注释符,主要是为了消除原始查询中剩余的部分,防止语法错误。MySQL中使用-- (注意末尾空格)
  • 若应用过滤空格,可用/**/注释符替代

单引号测试

  • 在输入框的输入点添加一个'(单引号),观察页面是否报错。
  • 预期结果:
    • 存在漏洞:页面返回数据库错误(如MySQL、SQL Server的报错信息)。
    • 无漏洞:页面正常或显示通用错误(如“参数错误”)
  • 示例:URL/?id=1'
  • 报错原因:SQL语句中单引号未闭合
  • 为什么存在漏洞:如果应用直接将数据库的报错信息显示给用户,说明输入没有被过滤或转义,可能存在注入漏洞,数据库报错说明用户输入直接影响到了SQL语句的结构,导致语法错误
  • 注意:并非所有返回错误的情况都是SQL注入漏洞
    • 例如,应用可能自己检测到非法输入并返回错误页面,这时候的错误信息并不是来自数据库,而是应用层控制的
    • 因此,关键要看错误信息的内容是否是数据库特定的,比如MySQL的错误信息会有“You have an error in your SQL syntax”这样的提示

布尔测试(真/假条件判断)

  • 原理:构造一个恒真或恒假的条件,观察页面响应差异
  • 恒真条件:' AND 1=1 --
    • 如果页面正常显示,说明条件被接受
  • 恒假条件:' AND 1=2 --
    • 如果页面无数据或异常,说明条件生效
  • 两者结果一致 → 可能无漏洞或需进一步测试
  • 为什么存在漏洞:如果应用程序没有正确过滤输入,攻击者的条件会被拼接到SQL语句中,从而改变查询的原始逻辑。例如,永真条件会让WHERE子句始终成立,而永假条件则让查询结果为空。攻击者注入的AND 1=1或AND 1=2会被拼接到SQL语句中,直接影响查询逻辑
  • 考虑到盲注的情况,即页面没有明显回显,但通过真假的响应差异(如页面内容的不同、HTTP状态码的变化,或者响应时间的差异)来判断。这时候布尔测试尤为重要,因为它不依赖错误信息或数据回显
  • 适用场景:
    • 页面无显式回显:无法通过UNION SELECT直接显示数据
    • 无数据库报错信息:错误信息被屏蔽,无法触发Error-Based注入
    • 盲注环境:仅能通过页面内容、HTTP状态码或响应时间差异间接推断结果
  • 局限性:
    • 依赖响应差异:若真/假条件响应无区别,无法判断漏洞
    • 效率较低:盲注需逐字符猜测,耗时较长
    • 过滤绕过:若关键词(如AND、OR)被过滤,需使用替代方案(如&&、||)

联合查询测试(Union-Based)

  • 尝试通过 UNION SELECT 联合查询获取数据
  • 适用场景:页面会回显数据库查询结果(如文章详情页)
  • 步骤:
    • 确定字段数:order by
    • 联合查询测试回显位:union select 1,2,3
  • 为什么要联合查询测试回显位:回显位指的是网页上显示数据库查询结果的位置。当进行联合查询时,攻击者需要确定他们的注入查询结果会显示在网页的哪个位置,这样才能有效地提取数据
    • 通过测试不同的列数,并观察页面变化,攻击者可以确定哪些列的数据会被回显到页面上,从而在这些位置插入恶意查询以提取信息
  • 为什么必须测试回显位?
    • 数据可见性:只有通过回显位才能直接看到注入的查询结果
    • 若注入的数据未显示在页面上,攻击者需依赖盲注(Boolean/Time-Based),效率大幅降低
    • 精准提取信息:回显位允许攻击者直接插入数据库函数或查询语句,快速获取敏感数据
  • SELECT 1在SQL中的基本含义是什么?其实这是一个简单的查询,返回数字1
  • 当攻击者使用UNION SELECT 1,2,3时,这里的1、2、3是为了匹配原始查询的列数,从而让联合查询生效。这时候,数字1、2、3本身并没有实际的数据意义,只是用来占位,方便后续替换成实际的函数或数据,比如database()或者version()
  • 在注入过程中如何确定需要多少个SELECT 1,2,3中的数字。这需要先通过ORDER BY子句来确定原始查询的列数,然后确保联合查询的列数相同,否则会引发错误。所以这里的数字个数是根据ORDER BY测试得到的列数来决定的
  • 将显示的数字位置替换为数据库函数以提取数据
  • 若原始查询的字段类型不兼容(如某列需字符串类型),可使用 NULL 或字符串占位

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[联合省选2025 游记] Now and forever

正在写。。。但是估计有人会急,所以同步更新([联合省选2025 游记] Now and forever day -1 乐死我了,今天出了个巨大的乐子,总结为逐火十三英桀 文章链接:https://www.luogu.com.cn/article/xlmq65ph 直击主题:https://pic1.imgdb.cn/item/67c1b6ded0e0a243d4083603.png …

Java学习——数组

数组的定义和声明1.声明数组 int[] array =null;这一步在栈里面压入了一个array;声明的时候数组还不存在 2.创建数组 array=new int[10] ;这一步在堆里面开辟了一个内存 3.给数组元素赋值 for (int i = 0; i < nums.length; i++) { nums[i] = i + 1; System.out.println(nu…

pyenv下载慢的解决方式

pyenv install 不知道为什么会卡住 解决方法就是手动直接下载对应的版本 放到对应的目录 例如这里显示的To C:\Users\28453\.pyenv\pyenv-win\install_cache\python-3.12.9-amd64.exe 我们只需要到 python 官网去下载对应的版本 并放到指定目录 我用的是 pyenv-win 需要下载 …

MongoDB聚合查询

MongoDB聚合查询 创建测试数据 db.student.drop() db.student.insertOne({_id: 1,name: "zhangsan",age: 12,teacher: ["Tom","Jack"]}) db.student.insertOne({_id: 2,name: "lisi",age: 15,teacher: ["Lucy","Tom&qu…

htmx怎么样,光速弃坑

前言 htmx可以说是对html标签的加强,提供了一些额外的标签属性,来获得一些功能,比如ajax局部渲染之类的。 快速自定义事件等等…… 使用? <script src="https://cdn.bootcdn.net/ajax/libs/htmx/2.0.4/htmx.min.js"></script>我想首先使用一下获取&l…

2024春季NOI省选游记

前言 初二,同步赛选手,Day 1 还行,Day 2 拉跨。 Day 1 (时刻有些许偏差) \(8:25\) 公布密码了,居然没有 PDF 密码。 \(8:26\) 开 T1,感觉余数必须要枚举,剩下的可能需要 \(\log\) 找解。 \(8:35\) 开始写二分,没过大样例。 \(8:57\) 调了半天,发现二分是假的。 \(9:13\…

3.1 多元函数的全微分

1 多元函数的全微分 1.1 定义 1.1.1 回顾一元函数的微分 1.1.2 多元函数的定义1.1.3 可微推导连续 但连续不一定可微,证明如下: 若连续一定可微,又一元函数必满足二元函数的性质,又一元函数可微必可导,可推至连续必可导,矛盾 1.2 多元函数可微的必要条件 1.2.1 可微必可导…

React—10—受控组件和非受控组件;高阶组件

一、概念 我的理解是,是否有react提供数据,分为受控组件和非受控组件。 比如input元素,只要绑定了value属性,那么在react中,用户在输入框输入的值不会显示在输入框(react应该做了限制,原生html的input框即使value绑定了值依然可以输入), 这就导致,想改变value的值,必须…

autojs通过vscode写好的文件上传的手机,并打包apk

1.安装vscode 2.下载autojs插件和chinese插件3.启动autojs插件,手机才可以链接 (链接时输入的是手机的ip地址)4.上传到手机5.打包本文来自博客园,作者:六月OvO,转载请注明原文链接:https://www.cnblogs.com/chenlifan/p/18745272

Windows 提权-UAC 绕过

本文通过 Google 翻译 UAC-Bypass – Windows Privilege Escalation 这篇文章所产生,本人仅是对机器翻译中部分表达别扭的字词进行了校正及个别注释补充。导航0 前言 1 场景一:枚举得到存储的管理员凭证(GUI 环境)1.1 使用 netplwiz.exe 帮助主题绕过 UAC2 场景二:枚举得到…

三剑客与正则系列-正则表达式

1.注意事项正则符号都是英文符号,避免使用中文符号 推荐使用grep/egrep命令,默认设置了别名,自动加上颜色 http://nbre.oldboylinux.cn/ 分析正则与正则匹配到的内容. 其他坑.# "" . #‘’ ”“ 。alias grep=grep color=auto alias egrep=egrep color=auto2.符号概述…

【凸优化笔记2】-凸函数、下水平集、范数

转自:https://zhuanlan.zhihu.com/p/102098039 1. 凸函数 1.1 凸函数定义 一个函数𝑓:𝑅𝑛→𝑅是凸的,如果定义域𝑑𝑜𝑚𝑓是凸集,并且对于所有𝑥,𝑦∈𝑑𝑜𝑚𝑓,𝜃∈[0,1],都有: 𝑓(𝜃𝑥+(1−𝜃)𝑦)≤𝜃𝑓(𝑥)+(1−𝜃)𝑓…