宽字节注入

宽字节注入

原理

利用mysql特性, 在使用GBK编码时将/进行转义

ASCII码传输中文是会变成字符串: utf-8, GBK(宽字节注入, 默认两个字节为一个汉字)

URL 转码

十六进制形式

  • 空格 %20
  • %27
  • # %23
  • \ %5C

如何从addslashes函数中逃逸

addslashes -
在GBK编码中, 会使用addslashes函数(在传入值中插入“/”以转义)

如何逃逸
  1. 将\转义
  2. 把\弄没
e.g.

注入 http://192.168.3.23/wide/0x01/index.php?id=2 时, 在后面加’ 变成
http://192.168.3.23/wide/0x01/index.php?id=2’, 数据库并没有报错

原因: addslashes()已经把我们提交的单引号给转义了

因为我们的目的是让单引号溢出而使数据库报错,但是现在单引号被转义了所以变成了"2’".

按照GBK的编码算法, 我们输入的是2%5C%27

  • %5C是addlashes()添加的/
  • %27是希望逃逸的单引号

解决方法: 因为GBK编码默认两个字符为一个汉字, 我们可以通过输入宽字符%df使反斜杠和这个%df形成一个汉字,这样后面的单引号就不会被转义而达到逃逸的效果

输入http://192.168.3.23/wide/0x01/index.php?id=2%df’
这时,根据GBK编码,输入的内容为2%df%5C%27

这时, %df和%5C组成了汉字 運 查询就变为2運’,单引号成功逃逸

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值