sql之宽字节注入、Cookie注入攻击

本文深入探讨了SQL注入攻击中的宽字节注入和Cookie注入。宽字节注入主要利用GBK编码特性,通过%df%5c等构造payload绕过过滤。在Cookie注入中,攻击者可以通过修改Cookie内容,利用未过滤的参数直接执行SQL语句,实现数据泄露或非法操作。文中提供了具体实例和漏洞利用方法。
摘要由CSDN通过智能技术生成

宽字节注入攻击

什么是宽字节注入?

如今有很多人在编码的时候,大多数人对程序的编码都使用unicode编码,网站都使用utf-8来一个统一
国际规范。但仍然有很多,包括国内及国外(特别是非英语国家)的一些cms,仍然使用着自己国家的
一套编码,比如gbk,作为自己默认的编码类型。也有一些cms为了考虑老用户,所以出了gbk和utf-8
两个版本。一个gbk编码汉字,占用2个字节。一个utf-8编码的汉字,占用3个字节。
至于mysql宽字节注入的原理就是因为数据库使用了GBK编码

宽字节注入原理

GBK 占用两字节
ASCII占用一字节
PHP中编码为GBK,函数执行添加的是ASCII编码(添加的符号为“\”),MYSQL默认字符集是GBK等宽
字节字符集。
大家都知道%df’ 被PHP转义(开启GPC、用addslashes函数,或者icov等),单引号被加上反斜杠\,
变成了 %df\’,其中\的十六进制是 %5C ,那么现在 %df\’ =%df%5c%27,如果程序的默认字符集是
GBK等宽字节字符集,则MySQL用GBK的编码时,会认为 %df%5c 是一个宽字符,也就是縗,也就是
说:%df\’ = %df%5c%27=縗’,有了单引号就好注入了。

宽字字节注入实列
sqli-32 题 [测试靶场地址][http://43.247.91.228:84/Less-32/?id=1]

思路:

  1. 由于单引号被过滤了,所以我们使用 %df 吃掉 \, 具体的原因是 urlencode(’) = %5c%27 ,我
    们在 %5c%27 前面添加 %df ,形成 %df%5c%27 ,而上面提到的mysql在GBK编码方式的时候会将两
    个字节当做一个汉字,此事 %df%5c 就是一个汉字,%27则作为一个单独的符号在外面,同时也就
    达到了我们的目的。
  2. 将 ’ 中的 \ 过滤掉,例如可以构造 %**%5c%5c%27 的情况,后面的 %5c 会被前面的 %5c 给注释
    掉。这也是bypass的一种方法。
    注入实操:
    (1) 构造代码,成功绕过,payload如下:
    http://localhost:81/sqli-labs-master/Less-32/index.php?id=1%df%27 and 1=1–+
    在这里插入图片描述
    (2)order by查询字段数
    http://localhost:81/sqli-labs-master/Less-32/index.php?id=1%df%27 order by 4–+
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值