浅析白盒审计中的字符编码及SQL注入

尽管现在呼吁所有的程序都使用unicode编码,所有的网站都使用utf-8编码,来一个统一的国际规范。但仍然有很多,包括国内及国外(特别是非英语国家)的一些cms,仍然使用着自己国家的一套编码,比如gbk,作为自己默认的编码类型。也有一些cms为了考虑老用户,所以出了gbk和utf-8两个版本。

0×01 MYSQL中的宽字符注入

<?php//连接数据库部分,注意使用了gbk编码,把数据库信息填写进去$conn = mysql_connect(‘localhost‘, ‘root‘, ‘toor!@#$‘) or die(‘bad!‘);mysql_query("SET NAMES ‘gbk‘");mysql_select_db(‘test‘, $conn) OR emMsg("连接数据库失败,未找到您填写的数据库");//执行sql语句$id = isset($_GET[‘id‘]) ? addslashes($_GET[‘id‘]) : 1;$sql = "SELECT * FROM news WHERE tid=‘{$id}‘";$result = mysql_query($sql, $conn) or die(mysql_error()); //sql出错会报错,方便观察?><!DOCTYPE html><html><head><meta charset="gbk" /><title>新闻</title></head><body><?php$row = mysql_fetch_array($result, MYSQL_ASSOC);echo "<h2>{$row[‘title‘]}</h2><p>{$row[‘content‘]}<p>\n";mysql_free_result($result);?></body></html>

0×04 宽字符注入的修复

0×05 iconv导致的致命后果

0×06 总结

浅析白盒审计中的字符编码及SQL注入,布布扣,bubuko.com

浅析白盒审计中的字符编码及SQL注入

上一篇:java上传数据到mysql


下一篇:Oracle异常的抛出处理