济南自助建站模板,wordpress博客内容预览,稿定设计简单好用的在线设计平台,wordpress 无法显示图片文章目录 宽字节注入是什么#xff1f;注入练习让转义符失效联合查询 代码审计 宽字节注入是什么#xff1f; 宽字节注入准确来说不是注入手法#xff0c;而是另外一种比较特殊的情况。宽字节注入的目的是绕过单双引号转义。 宽字节注入是一种绕过单双引号转义的手段#x… 文章目录 宽字节注入是什么注入练习让转义符失效联合查询 代码审计 宽字节注入是什么 宽字节注入准确来说不是注入手法而是另外一种比较特殊的情况。宽字节注入的目的是绕过单双引号转义。 宽字节注入是一种绕过单双引号转义的手段严格来说并不是注入手段。
注入练习
让转义符失效
以sqli-labs-32 关为例子这一关会转义单双引号所以没有办法进行SQL注入输入下面语句
?id2返回页面如下 返回的325c27是2\的ASCII码转16进制的结果。
\符号的16进制是5c这时候想到GBK编码如果能用GBK编码和5c配对就能把5c变成GBK编码的一部分强制它变成汉字从而让\符号失效。
在https://www.qqxiuzi.cn/bianma/zifuji.php网站中查询GBK编码在5c前面补两位数字如825C查询出汉字说明可以进行拼接。
在hackbar的URL中输入
?id2%82返回结果转义符号已失效 由于GBK编码的范围从81开始325c27中的32不在GBK编码范围内所以32未被匹配成GBK编码。
联合查询
联合查询输入语句
?id2%82and 12 union select 1,version(),database() --运行结果如下获得了数据库的版本号和名称 代码审计
在路径C:\phpStudy\WWW\sqli-labs-master\Less-32下找到index.php文件用编辑器打开找到下面的php代码
//including the Mysql connect parameters.
include(../sql-connections/sql-connect.php);function check_addslashes($string)
{$string preg_replace(/. preg_quote(\\) ./, \\\\\\, $string); //escape any backslash$string preg_replace(/\/i, \\\, $string); //escape single quote with a backslash$string preg_replace(/\/, \\\, $string); //escape double quote with a backslashreturn $string;
}// take the variables
if(isset($_GET[id]))
{
$idcheck_addslashes($_GET[id]);
//echo The filtered request is : .$id . br;//logging the connection parameters to a file for analysis.
$fpfopen(result.txt,a);
fwrite($fp,ID:.$id.\n);
fclose($fp);// connectivity mysql_query(SET NAMES gbk);
$sqlSELECT * FROM users WHERE id$id LIMIT 0,1;
$resultmysql_query($sql);
$row mysql_fetch_array($result);function check_addslashes($string)函数做单双引号的转义 if(isset($_GET[‘id’]))接收参数并通过$idcheck_addslashes($_GET[‘id’]);语句将参数传给上面的函数 mysql_query(“SET NAMES gbk”);函数将与数据库交互的字符改成GBK这个语句是能用GBK让转义符失效的基础。