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

SQL注入总结

一.sql注入

原理:当一个网站存在与用户交互的功能(如登录表单、搜索框、评论区等),并且用户输入的数据未经充分过滤或转义,直接拼接到后台数据库查询语句中执行时,就可能引发SQL注入漏洞。攻击者可以通过构造恶意输入,篡改原始SQL语句的逻辑,从而绕过认证、窃取数据、篡改记录甚至完全控制数据库。

sql注入分为数字型注入和字符型注入

数字型的判断语句是

 or 1=1 或者 or 1=2

字符型的判断语句要注意的是闭id前面的引号和闭合后面的引号或者注释掉后面的引号。

'1 or'1'='1    或者  '1 or 1=1 --+(#)#号在URL里不能用

当输入1‘时,数字型注入会这样显示,知道是数字型注入后使用数字型 id=1 or 1=1

字符型会这样显示,确认是字符型后输入id=1‘ and ’1‘=’1进行闭合MySQL里的分号


sql注入——union联合查询(当界面有有回显)

UNION 是 SQL 中的一个操作符,用于将两个或多个 SELECT 语句的结果合并成一个结果集。它要求所有 SELECT 语句的列数、数据类型必须一致。

联合查询注入语句构造步骤:

1.用order by + 数字 判断原有语句的列数

2.使原有语句查询为空

3.判断数据输出位置(回显位)

4.使用union 语句拼接目标数据的查询语句

实践

输入1’发现外面有引号包裹,说明是字符型

用order by查询列数

判断回显位,确保让原有查询语句为空

查询当前数据库

查询当前数据库下的表名并一行显示

一行显示函数 group_concat ()

-1' union select 1,group_concat(table_name)from information_schema.tables where table_schema='sqli' #

查询flag表里有哪些字段

2.报错注入

当遇到没有回显位,但是会有报错信息时,可以使用报错注入。

extractvalue()函数

作用:主要用于从 XML 文档中提取特定节点的值。通常与sql注入攻击相关联

注入语句:

extractvalue(1,concat(0x7,(select group_concat(schema_name))))

updatexml()函数

作用:mysql对xml文档数据进行查询和修改的xpath函数

注入语句:

 updatexml(1,concat(0x7e,(select database()),0x7e),1)

 0x3a :冒号

0x7e  ~

boolean 盲注

当页面只能显示1(条件为真)和0 (条件为假)的时候,就可能存在布尔盲注。

ascii(substr(sr1,第几位开始截取,截取几位))>90

截取到的字符转化成ascii是否大于90。

还可以用正则表达式 regexp ^[a-z] 

?id=1 and database() regexp'^a'--+

表示当前网站的数据库名第一个字符是否是a

时间盲注

特点:当前页面没有任何显示,看不出页面的变化。

if(left(database(),1)='s',sleep(5),0)

当条件为真时,就会执行延时 

sql injection——宽字节注入

大家不理解的话可以参考这篇文章https://blog.csdn.net/2401_89233381/article/details/144636215?ops_request_misc=%257B%2522request%255Fid%2522%253A%25226a8bf1179833fe7059c69a95dc548299%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=6a8bf1179833fe7059c69a95dc548299&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_click~default-2-144636215-null-null.142^v102^pc_search_result_base6&utm_term=%E5%AE%BD%E5%AD%97%E8%8A%82%E6%B3%A8%E5%85%A5&spm=1018.2226.3001.4187当网站用addslashe()函数转义时,该函数会在某些字符前面加‘ / ’转义,而且输入%df时转义函数就会在前面加入反斜杠,此时就变成这样/%df,而在GBK编码中会转成汉字。

宽字节注入的原理就是当网站使用GBK编码时,且对字符编码处理不当导致存在sql注入漏洞。

主要的两个转义函数 addslashe()、mysql_real_escape_string() 函数

base64 注入

就是将输入的字符使用base64编码

搜索型注入

%like%

 k%'and1=1--+

pikachu靶场

先输入1',发现是单引号闭合

输入

结果说明没有4列

输入order by 3,成功回显

1%' union select 1,2,3 # 

找到数据库

cookic 注入

原理还是一样,只是传参变成cookie(请求头)

抓包改包,看哪个界面会报错

http头部注入(user-agent)(referer)

insert into 输入的方式不能用注释的方式--+要用引号闭合

二次注入

原理是​攻击者构造的恶意数据存储在数据库后,恶意数据被读取并进入到SQL查询语句所导致的注入。

注册好后登录,进入后更改密码

然后登录admin用新密码,成功登录

查看代码发现并没有做过滤,所以当admin’# 输入进来后,被’#当成闭合和注释了,就相当于是在给admin改密码

http://www.xdnf.cn/news/4260.html

相关文章:

  • 【C++】C++中的命名/名字/名称空间 namespace
  • 【东枫科技】代理英伟达产品:智能网卡的连接线
  • 在 Win11 下安装 Wireshark 的详细步骤
  • ROS学习——IMU惯性测量单元节点的原理与编写(含C++和Python代码)
  • 【iOS】源码阅读(二)——NSObject的alloc源码
  • CSS网格布局
  • SQL 与 Python:日期维度表创建的不同选择
  • 人工智能与生命科学的深度融合:破解生物医学难题,引领未来科技革命
  • Linux远程管理
  • 2025年软件工程与数据挖掘国际会议(SEDM 2025)
  • Android 开发中JDK 的使用和配置详解
  • 机器视觉的PCB激光褪镀层的应用
  • 【基于SSM+Vue+Maven+Mysql】音乐管理系统(附源码+数据库脚本)
  • 决 策 树
  • 《深度学习实践教程》[吴微] ch-5 3/5层全连接神经网络
  • 使用Java和LangChain4j实现人工智能:从分类到生成式AI
  • CentOS 7 安装指定版本 Docker 及镜像加速/配置优化攻略
  • 候选码 主属性 非主属性
  • STM32--RCC--时钟
  • 【大模型系列篇】开启AI自主科研新时代:WebThinker开源深度研究框架
  • 还原TF卡或U盘
  • 18个国内wordpress主题推荐
  • 京东:外卖上线新功能,但仅限今天
  • NGINX `ngx_http_auth_request_module` 模块详解基于子请求的认证授权方案
  • 已经写好论文的AI率降低
  • 7系列 之 IO_FIFO
  • 大学之大:隆德大学2025.5.6
  • 分布式开发:数字时代的高性能架构革命-为什么要用分布式?优雅草卓伊凡
  • Nmap 工具的详细使用教程
  • StableDiffusionWebUI的AI绘图AI绘视频详细使用教程+报错排坑