您当前的位置: 首页 >  网络

罗四强

暂无认证

  • 2浏览

    0关注

    497博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【网络安全工程师面试合集】常用的sql注入手法及防御

罗四强 发布时间:2021-12-05 20:26:21 ,浏览量:2

4.1.6. SQL注入小技巧 4.1.6.1. 宽字节注入

一般程序员用gbk编码做开发的时候,会用 set names 'gbk' 来设定,

这句话等同于

set
character_set_connection = 'gbk',
character_set_result = 'gbk',
character_set_client = 'gbk';

漏洞发生的原因是执行了 set character_set_client = 'gbk';

之后,mysql就会认为客户端传过来的数据是gbk编码的,

从而使用gbk去解码,而mysql_real_escape是在解码前执行的。

但是直接用 set names 'gbk' 的话real_escape是不知道设置的数据的编码的,就会加 %5c

此时server拿到数据解码 就认为提交的字符+%5c是gbk的一个字符,这样就产生漏洞了。

解决的办法有三种,第一种是把client的charset设置为binary,就不会做一次解码的操作。

第二种是是 mysql_set_charset('gbk') ,这里就会把编码的信息保存在和数据库的连接里面,

就不会出现这个问题了。

第三种就是用pdo。

还有一些其他的编码技巧,比如latin会弃掉无效的unicode,

那么admin%32在代码里面不等于admin,

在数据库比较会等于admin。

 【渗透测试相关
关注
打赏
1625533955
查看更多评论
立即登录/注册

微信扫码登录

0.0379s