SQL注入之宽字节注入

文章目录

宽字节注入是什么?

宽字节注入准确来说不是注入手法,而是另外一种比较特殊的情况。宽字节注入的目的是绕过单双引号转义。

宽字节注入是一种绕过单双引号转义的手段,严格来说并不是注入手段。

注入练习

让转义符失效

以sqli-labs-32 关为例子,这一关会转义单双引号,所以没有办法进行SQL注入,输入下面语句:

复制代码
?id=2'

返回页面如下:

返回的325c27是2\'的ASCII码转16进制的结果

\符号的16进制是5c,这时候想到GBK编码,如果能用GBK编码和5c配对,就能把5c变成GBK编码的一部分,强制它变成汉字,从而让\符号失效。

https://www.qqxiuzi.cn/bianma/zifuji.php网站中查询GBK编码,在5c前面补两位数字,如825C,查询出汉字,说明可以进行拼接。

在hackbar的URL中输入

复制代码
?id=2%82'

返回结果,转义符号已失效:

由于GBK编码的范围从81开始,325c27中的32不在GBK编码范围内,所以32未被匹配成GBK编码。

联合查询

联合查询输入语句:

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

运行结果如下,获得了数据库的版本号和名称:

代码审计

在路径C:\phpStudy\WWW\sqli-labs-master\Less-32下找到index.php文件用编辑器打开,找到下面的php代码:

php 复制代码
//including the Mysql connect parameters.
include("../sql-connections/sql-connect.php");

function check_addslashes($string)
{
    $string = preg_replace('/'. preg_quote('\\') .'/', "\\\\\\", $string);          //escape any backslash
    $string = preg_replace('/\'/i', '\\\'', $string);                               //escape single quote with a backslash
    $string = preg_replace('/\"/', "\\\"", $string);                                //escape double quote with a backslash
      
    
    return $string;
}

// take the variables 
if(isset($_GET['id']))
{
$id=check_addslashes($_GET['id']);
//echo "The filtered request is :" .$id . "<br>";

//logging the connection parameters to a file for analysis.
$fp=fopen('result.txt','a');
fwrite($fp,'ID:'.$id."\n");
fclose($fp);

// connectivity 

mysql_query("SET NAMES gbk");
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);

function check_addslashes($string)函数做单双引号的转义;

if(isset(_GET\['id'\]))接收参数,并通过id=check_addslashes($_GET['id']);语句将参数传给上面的函数;

mysql_query("SET NAMES gbk");函数将与数据库交互的字符改成GBK,这个语句是能用GBK让转义符失效的基础。

相关推荐
麦兜*5 分钟前
MongoDB 6.0 新特性解读:时间序列集合与加密查询
数据库·spring boot·mongodb·spring·spring cloud·系统架构
android_xc6 分钟前
Android Studio适配butterknife遇到的坑
android·ide·android studio·butterknife
chat2tomorrow8 分钟前
数据采集平台的起源与演进:从ETL到数据复制
大数据·数据库·数据仓库·mysql·低代码·postgresql·etl
稻草人想看远方11 分钟前
关系型数据库和非关系型数据库
数据库
考虑考虑12 分钟前
Postgerssql格式化时间
数据库·后端·postgresql
2501_9159184120 分钟前
uni-app 项目 iOS 上架效率优化 从工具选择到流程改进的实战经验
android·ios·小程序·uni-app·cocoa·iphone·webview
千里码aicood20 分钟前
【springboot+vue】党员党建活动管理平台(源码+文档+调试+基础修改+答疑)
java·数据库·spring boot
Chan1624 分钟前
【智能协同云图库】基于统一接口架构构建多维度分析功能、结合 ECharts 可视化与权限校验实现用户 / 管理员图库统计、通过 SQL 优化与流式处理提升数据
java·spring boot·后端·sql·spring·intellij-idea·echarts
00后程序员张38 分钟前
如何在不同 iOS 设备上测试和上架 uni-app 应用 实战全流程解析
android·ios·小程序·https·uni-app·iphone·webview
TDengine (老段)41 分钟前
TDengine 选择函数 Max() 用户手册
大数据·数据库·物联网·时序数据库·tdengine·涛思数据