千家信息网

宽字节注入解析

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,在一个CTF练习的网站,看到了一个宽字节注入的题目,我是一个web萌新,没什么经验,一开始也没有想到是宽字节,还是一位朋友给我提到的,让我猛然大悟,咳咳。。。做一些总结。练习题目网站地址:http:/
千家信息网最后更新 2024年09月22日宽字节注入解析
在一个CTF练习的网站,看到了一个宽字节注入的题目,我是一个web萌新,没什么经验,一开始也没有想到是宽字节,还是一位朋友给我提到的,让我猛然大悟,咳咳。。。做一些总结。

练习题目网站地址:http://ctf.bugku.com。
一、了解一下宽字节注入原理
前提
1、我们都知道,在防御SQL注入的时候,大多说都是使用的过滤特殊字符,或者使用函数将特殊字符转化为实体,就是说在字符转义,添加'\'。这里第一条就是有这个机制。
2、设置宽字节字符集,这里为GBK字符集,GBK字符集占用两个字节。关键就在于这个设置字符集。通常有很多方法可以设置,例如:
(1) mysql_query,如mysql_query("SET NAMES 'gbk'", $conn)、mysql_query("setcharacter_set_client = gbk", $conn)。

(2) mysql_set_charset,如mysql_set_charset("gbk",$conn)。
实现过程:当我们测试的时候,输入"%df'",这个时候如果php函数是使用的addslashes()的时候,会在冒号的前面加上'\'。也就变成了%df\' 。对应的编码是%df%5c'.这时候网站字符集是GBK,MYSQL使用的编码也是GBK的话,就会认为%df\是一个汉"運'",这样的话,单引号前面的\就不起作用了,从而转义失败,题目就会出现报错信息。
我们就以网站的题目测试一下:

1、查看网页源码

出现字符集gb2312,这时候就应该想到宽字节注入
2、报错测试可注入

出现了报错信息,因为构成的语句中会多出一个单引号。例如查询语句为:

$name=addslashes($_POST['name'])Select * from user  where name='$name'

将我们的%df'传递进去就变成了:

Select * from user where name='%df\''

这样我们的单引号和前面的闭合,多出一个原来的单引号,报错。
3、查询字段数:

%df' order by 2 %23

这里%23表示注释,意指去将后面的语句注释掉包括什么多出的单引号和limit限制只能查询一行的语句。

经过几次测试,确定字段数为2.
4、判断数据库:

%df' union select 1,database() %23


得到数据库的 名字。

5、接着根据题目提示,给出了表名和字段名,可以直接查询字段内容

%df' union select 1,string from sql5.key where id=1 %23

个人见解

字符 字节 字符集 引号 题目 字段 时候 网站 语句 查询 测试 特殊 信息 函数 就是 数据 数据库 注释 编码 转义 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 物联网终端无法连接服务器 北京考勤机软件开发 服务器的挂耳是什么样子的 数据库最基本的数据单位是哪个 回收戴尔服务器MD1220 网络监控系统管理服务器 商场系统软件开发工具 计算机网络技术有什么推荐 面向对象的软件开发是用例 杭州趣的网络技术 软件开发公司倒闭了不给代码 哈密网络技术推荐厂家 台服魔兽世界服务器 华为5g基站服务器什么样子 网络安全四梁八柱是什么 河南阡陌网络技术有限公司 边锋网络技术在深圳有吗 一万日活需要多大云服务器 软件开发模型怎么辨别 数掘云服务器 网络技术基础题目答案 js是一种软件开发语言吗 服务器安全设置(二十二) 支持微软服务器操作系统的服务器 软件开发注册码 云计算的构成包括服务器嘛 软件开发一年多了还能干什么 库力索法软件开发 计算机网络技术专业发展途径 看mysql的服务器名
0