前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >宽字节注入与二次注入[文末彩蛋]

宽字节注入与二次注入[文末彩蛋]

作者头像
天钧
发布2019-07-25 10:30:58
5730
发布2019-07-25 10:30:58
举报
文章被收录于专栏:渗透云笔记

在进行php 连接mysql 时,当设置”ser character_set_client=gbk” 时会导致一个编码转换的注入问题,也就是熟悉的宽字节注入

当存在宽字节注入时,%df%27 可把程序中过滤的\ (%5c)吃掉。

例如:/1.php?id=1存在宽字节注入时,则: /1.php?id=-1'and 1=1%23 单引号会被转义成 \'

但是提交:/1.php?id=-1%df’and 1=1%23 时,%df和\ 反斜杠(%5c) 组合 %df%5c 编码后是一个汉字,这时候单引号依然存在,则会闭合成功,形成注入漏洞。

形成原因:由于设置Mysql 服务器客户端数据编码是GBK ,set character_set_client=gbk执行语句时进行GBK 转码时形成攻击,通常都设置方法是:SET NAMES ‘gbk’,等同于:

代码语言:javascript
复制
 SET
 character_set_connection=’gbk’,
 character_set_results=’gbk’,
 character_set_client=’gbk’

[节选自尹毅的代码审计《企业级web代码安全架构》]

在线上靶子上试一下

代码语言:javascript
复制
 https://www.xss.tv/payload/sql/sql-wide.php?id=5%20and%201=2%df%27%20and%201=2%23

我们提交的语句是

代码语言:javascript
复制
 and 1=2 %df'and 1=1%23

原理

%df%27= >(addslashes)>%df%5c%27>(GBK)>運’ 用户输入=>过滤函数=>代码层的$sql>mysql处理请求==>mysql中的sql

默认编码character_set_client>根据character_set_connection转码>更新数据库时转化成字段 所对应的编码

宽字节注入修复

使用mysql_set_charset(GBK)指定字符集

使用mysql_real_escape_string进行转义

代码审计

全局搜索关键词

SET NAMES

代码语言:javascript
复制
 mysql_query("SET NAMES gbk");

character_set_client=gbk

mysql_set_charset('gbk')

二阶注入**

一阶注入:

  1. 一阶SQL注入发生在一个HTTP请求和响应中,对系统的攻击是立即执行的
  2. .攻击者在http请求中提交非法输入
  3. 应用程序处理非法输入,使用非法输入构造SQL语句
  4. 在攻击过程中向攻击者返回结果

二阶注入:

  1. 攻击者在http请求中提交恶意输入
  2. 恶意输入保存在数据库中
  3. 攻击者提交第二次http请求
  4. 为处理第二次http请求,程序在检索存储在数据库中的恶意输入,构造SQL语句
  5. 如果攻击成功,在第二次请求响应中返回结果
代码语言:javascript
复制
 <?php
 $a=addslashes($GET['id']);
 $b=urldecode($a);
 echo '$a='.$a;
 echo '<br/>';
 echo '$b='.$b;
 ?>

addslashes函数,将单引号等字符 转义变成\’。

数据存进数据库后,数据又被还原,在这种情况下,如果发现一个新的注入同 时引用了被插入的数据库数据,就可以实现闭合新发现的注入漏洞引发二次注入

代码语言:javascript
复制
 https://www.xss.tv/payload/sql/sql-two.php?id=9%27and1=1
代码语言:javascript
复制
 select * from article where id = 9'and1=1

在线靶子练习,也可以使用上述代码进行练习

代码审计中也是通过搜索urldecode和rawurldecode挖掘二次注入

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 渗透云笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档