当前位置: 首页 > news >正文

SQL注入介绍

摘要:

本文介绍了SQL注入的概念、产生原因、危害,详细描述了其在渗透中的利用方式,包括绕过验证、获取敏感数据等,并探讨了如何挖掘SQL注入漏洞和判断其存在的方法。

目录

一、什么是注入

二、什么是SQL注入

三、SQL注入漏洞是怎么形成的

四、SQL注入的危害

五、SQL注入在渗透中的利用

1、绕过登录验证

2、获取敏感数据

3、文件系统操作

4、注册表操作

5、执行系统命令

六、如何挖掘SQL注入

1、常见的SQL注入漏洞流程

2、SQL注入漏洞分类

3、可能存在SQL注入的地方

4、如何判断是否存在SQL注入

5、SQL注入测试思路

七、SQL注入常用函数

1、报错函数

2、截取函数

3、判断函数

4、总结:先到这里吧,下见


一、什么是注入

将不受信任的数据作为命令或查询的一部分发送到解析器时,会产生诸如SQL注入、NoSQL注入、OS 注入和LDAP注入的注入缺陷。攻击者的恶意数据可以诱使解析器在没有适当授权的情况下执行非预期命令或访问数据。

注入能导致数据丢失、破坏或泄露给无授权方,缺乏可审计性或是拒绝服务。注入有时甚至能导致主机被完全接管

注入攻击的本质:就是把用户输入的数据当做代码执行。(过于信任用户


二、什么是SQL注入

所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意SQL命令目的的入侵行为。

SQL注入实质就是闭合前一句查询语句,构造恶意语句,恶意语句被代入SQL语句执行。


三、SQL注入漏洞是怎么形成的

随着B/S(浏览器与服务端)模式被广泛的应用,用这种模式编写应用程序的程序员也越来越多,但由于开发人员的水平和经验参差不齐,相当一部分的开发人员在编写代码的时候,没有对用户的输入数据或者是页面中所携带的信息进行必要的合法性判断,导致了攻击者可以提交一段数据库查询代码,根据程序返回的结果,获得一些他想得到的数据。这样就产生了被称为数据库的注入攻击SQL注入攻击。

  • 原因1:数据与代码未严格分离;

  • 原因2:用户提交的参数数据未做充分检查过滤即被代入到SQL命令中,改变了原有SQL命令的“语义”,且成功被数据库执行。

  • 原因3:SQL命令可以进行查询、插入、删除等操作,直接将这些命令拼接起来。


四、SQL注入的危害

这些危害包括但不局限于:

  1. 数据库信息泄漏:数据库中存放的用户的隐私信息的泄露。

  2. 网页篡改:通过操作数据库对特定网页进行篡改。

  3. 网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击。

  4. 数据库被恶意操作:数据库服务器被攻击,数据库的系统管理员帐户被窜改。

  5. 服务器被远程控制,被安装后门:经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统。

  6. 破坏硬盘数据,瘫痪全系统。

  7. 一些类型的数据库系统能够让SQL指令操作文件系统,这使得SQL注入的危害被进一步放大。


五、SQL注入在渗透中的利用

1、绕过登录验证

使用万能密码登录网站后台等。

举例:万能密码

假设我的数据名是:user=admin,密码是password=123456

正常的查询语句:

SQL

select * from users where user=’admin’ and password=’123456’;

使用SQL注入构造的POC是:

SQL

select * from users where user=’admin’ or 1=’1’ --+’ and password=’123456’;

这个POC就可以直接把整个表的所有数据全部输出来,无视密码。

注释:

--+--是注释的意思,+是空格的意思,浏览器 会自动把+识别为空格,假如直接在数据库里面,直接--就可以。

2、获取敏感数据

获取网站管理员帐号、密码等。

3、文件系统操作

列目录,读取、写入文件等。

4、注册表操作

读取、写入、删除注册表等。

5、执行系统命令

远程执行命令。


六、如何挖掘SQL注入

1、常见的SQL注入漏洞流程

2、SQL注入漏洞分类

  • 按数据类型:

    • 数字型(Integer)

    • 字符型(String)

  • 按返回结果:

    • 显错注入(Error-Based),就是查看查询语句的返回结果是否出现报错,从报错内容来推断数据库相关信息。

    • 盲注(Boolean/Time-Based Blind),就是靠猜测,输入数据查询语句,看返回的自己长度来判读语句是为真还是为假。

3、可能存在SQL注入的地方

登录框、参数名、参数值、搜索框、跟用户有交互的地方、表单的提交、Cookie (asp类型的网站比较多)、目录名、文件名、…

  • 最普遍的注入漏洞是由于参数值过滤不严导致的。

  • Cookie注入漏洞普遍存在于ASP的程序中。

  • 参数名、目录名、文件名等注入漏洞通常存在于有网站路由的程序中。

4、如何判断是否存在SQL注入

根据客户端返回的结果来判断提交的测试语句是否成功被数据库引擎执行,如果测试语句被执行了,说明存在注入漏洞。

5、SQL注入测试思路

盲注:

  1. 判断是否存在注入,注入是字符型还是数字型

  2. 猜解当前数据库名

  3. 猜解数据库中的表名

  4. 猜解表中的字段名

  5. 猜解数据

联合查询注入:

  1. 判断是否存在注入,注入是字符型还是数字型

  2. 猜解SQL查询语句中的字段数

  3. 确定显示的字段顺序

  4. 获取当前数据库

  5. 获取数据库中的表

七、SQL注入常用函数

1、报错函数

extractvalue():
例子:
字符型:'and+(extractvalue(1,concat(0x7e,(select+user()),0x7e)))='1
数字型:and (extractvalue(1,concat(0x7e,(select user()),0x7e)))=1
updatexml():
例子:
字符型:'and+(updatexml(1,concat(0x7e,(select+user()),0x7e),1))='1
数字型:and+(updatexml(1,concat(0x7e,(SELECT @@version),0x7e),1))=1
GTID_SUBSET():
报错信息只会包含“触发报错的那个参数”。第一位一旦非法报错,第二位的执行结果根本不会出现在错误回显里。因此,要将查询poc放在第一个参数

2、截取函数

Left:
left( Str, index)
Str–表示待截取的字符串
index–表示从左边开始共截取多少位
Left(database(),1)>'s'
Left(a,b)从左侧截取a的前b位。
例如:数据名:security
Left(database(),1)='s' 为正常
Left(database(),2)='se'为正常
可以配合bp,快速爆破数据库。
mid:
此函数为截取字符串一部分。
MID(column_name,start[,length])
例如:
1%27and+mid(user(),1,1)=%27r
substr:
Substr(a,b,c)
从b位置开始,截取字符串a的c长度。
Substr(user(),1,1)='r

3、判断函数

if:
if(a,b,c)
当a为真时候执行 b;
a为假时执行 c。
常用在时间盲注
and if('a'='a',sleep(1),sleep(5)) --+
case when:
case when 条件 then 正确的结果 else 错误的结果 end
例如:
1'and+1/(case+when+user()+like+'r%'+then+1+else+0+end)='1

4、总结:先到这里吧,下见

SQL注入技术详解:从联合查询到盲注实战-CSDN博客

http://www.jsqmd.com/news/843868/

相关文章:

  • logit 函数 与 原始分数 logits
  • SQL注入技术详解:从联合查询到盲注实战
  • 高效构建离线学习库:MoocDownloader一站式MOOC下载方案终极指南
  • 魔兽争霸III终极兼容性解决方案:WarcraftHelper完全配置指南
  • Windows远程桌面终极突破:RDP Wrapper创新性解锁多用户并发连接
  • 【无人机三维路径规划】基于遗传算法GA实现复杂山地环境下无人机三维路径规划研究(Matlab代码实现)
  • Windows防休眠终极指南:如何让电脑时刻保持清醒工作状态
  • 3种高效方法部署Windows包管理器:PowerShell一键安装Winget指南
  • 终极解决方案:NoSleep防休眠工具让你的Windows永不休眠
  • 靠谱的涡流模块个性化开发方案推荐 - mypinpai
  • XNBCLI终极指南:掌握星露谷物语XNB文件解包打包技术
  • 构建开源情报平台:模块化设计与自动化聚合实战
  • 网易云音乐NCM格式转换:三步解密法让音乐自由播放
  • NotebookLM赋能图书馆学研究:3大颠覆性应用+5个未公开工作流
  • Keil µVision多目标配置与条件编译实战指南
  • 如何在2026年继续畅玩Flash游戏?开源解决方案CefFlashBrowser深度指南
  • 靠谱的视频拍摄公司推荐 - mypinpai
  • 别再手动配置了!用Vivado 2018.2的MicroBlaze MCS IP核,5分钟搭建你的第一个软核处理器系统
  • 甲骨文云实例重启后公网 IP 地址会发生改变吗?
  • LKY Office Tools:一键自动化部署Office的终极解决方案
  • Dify 进阶篇:五类应用怎么选?从 Chat Assistant 到 Workflow 的场景拆解
  • 第十三章:R 读取 txt、csv 表格数据
  • 中兴光猫终极管理工具:一键开启工厂模式与永久Telnet完全指南
  • Pcap04高精度电容测量芯片在工业传感器中的应用:如何配置寄存器实现多通道差分测量
  • 3分钟掌握RVC语音克隆:零基础打造你的专属AI语音助手
  • 为什么中国探月工程团队已禁用传统文献管理工具?NotebookLM在嫦娥六号热控系统设计中的8小时知识闭环实践
  • 2026年亲测降至5%以下!10款快速降AI率工具推荐 - 降AI实验室
  • Ansible自动化运维:从入门到实战,掌握无代理架构与声明式配置
  • Valmet Metso A413654 通信接口板
  • HC5503晨芯阳70mΩ,2.1A 5V USB 高侧限流负载开关