宽字节注入是什么_sqlmap宽字节注入

宽字节注入是什么_sqlmap宽字节注入在一个CTF练习的网站,看到了一个宽字节注入的题目,我是一个web萌新,没什么经验,一开始也没有想到是宽字节,还是一位朋友给我提到的,让我猛然大悟,咳咳。。。做一些总结。练习题目网站地址:http://ctf.bugku.com。一、了解一下宽字节注入原理前提:1、我们都知道,在防御SQL注入的时候,大多说都是使用的过滤特殊字符,或者使用函数将特殊字符转化为实体,就是说在字符转义,添加‘\’。这里…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

在一个CTF练习的网站,看到了一个宽字节注入的题目,我是一个web萌新,没什么经验,一开始也没有想到是宽字节,还是一位朋友给我提到的,让我猛然大悟,咳咳。。。做一些总结。

练习题目网站地址:http://ctf.bugku.com。

一、了解一下宽字节注入原理

前提:

1、我们都知道,在防御SQL注入的时候,大多说都是使用的过滤特殊字符,或者使用函数将特殊字符转化为实体,就是说在字符转义,添加‘\’。这里第一条就是有这个机制。

2、设置宽字节字符集,这里为GBK字符集,GBK字符集占用两个字节。关键就在于这个设置字符集。通常有很多方法可以设置,例如:

(1) mysql_query,如mysql_query(“SET NAMES ‘gbk'”, $conn)、mysql_query(“setcharacter_set_client = gbk”, $conn)。

(2) mysql_set_charset,如mysql_set_charset(“gbk”,$conn)。

实现过程:当我们测试的时候,输入“%df‘”,这个时候如果php函数是使用的addslashes()的时候,会在冒号的前面加上’\’。也就变成了%df\’ 。对应的编码是%df%5c’.这时候网站字符集是GBK,MYSQL使用的编码也是GBK的话,就会认为%df\是一个汉“運’”,这样的话,单引号前面的\就不起作用了,从而转义失败,题目就会出现报错信息。

我们就以网站的题目测试一下:

1、查看网页源码

68e8fc92cdb6358387e77616da2ea231.png

出现字符集gb2312,这时候就应该想到宽字节注入

2、报错测试可注入

a59ab993c98399552a092fa3284479d5.png

出现了报错信息,因为构成的语句中会多出一个单引号。例如查询语句为:

$name=addslashes($_POST[‘name’])

Select * from user where name=’$name’

将我们的%df’传递进去就变成了:

Select * from user where name=’%df\’’

这样我们的单引号和前面的闭合,多出一个原来的单引号,报错。

3、查询字段数:

%df’ order by 2 %23

这里%23表示注释,意指去将后面的语句注释掉包括什么多出的单引号和limit限制只能查询一行的语句。

aa2eab0e5ec7fd52675e92ee56af0151.png

经过几次测试,确定字段数为2.

4、判断数据库:

%df’ union select 1,database() %23

4e82ac2f6cf6f3d9555ff3abdb46dbb4.png

得到数据库的 名字。

5、接着根据题目提示,给出了表名和字段名,可以直接查询字段内容

%df’ union select 1,string from sql5.key where id=1 %23

1113f57cd79eb229f242c32158b3ed88.png

个人见解

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/181897.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 动态数组

    动态数组什么是数据结构?线性表数组动态数组设计项目结构代码实现CybArrayList.javapackagecom.cyb;/***自定义ArrayList数组**@author

    2022年7月2日
    33
  • 响应式久草编程基础教程:久草Spring Boot 与 Lettuce 在线整合「建议收藏」

    响应式久草编程基础教程:久草Spring Boot 与 Lettuce 在线整合「建议收藏」本文主要介绍响应式编程访问Redis,以及SpringBoot与Lettuce的整合使用。Lettuce是可扩展性线程安全的Redis客户端,用于同步、异步和响应式使用。如果多个线程避免阻塞和事务性操作(例如BLPOP和MULTI/EXEC),则它们可以共享一个连接。Lettuce是基于Netty构建的。支持很多高级的Redis特性。根据SpringDataRedis2.0的更新的消息显示,SpringDataRedis不再支持JRedis的驱动,

    2022年10月19日
    0
  • oracle的number类型

    oracle的number类型1.简介一个可变长度的数据类型,使用四舍五入实现;既可以存储整数,也可以存储小数;2.使用语法(1)可指定两个参数:p:精度位precision,数据的有效位;取值范围38;默认38;*表示38s:小数位scale,小数点右边的位数;取值范围-84~127;默认:指定了p,默认s为最大范围;未指定p,默认s=0;numbernumber(p)number(p,s)(2)最高整数位数=p-ss正数,精确到小数点右边s位,四舍五入;s负数,精确

    2022年7月24日
    10
  • spring bean的生命周期面试如何回答_面试maven的生命周期

    spring bean的生命周期面试如何回答_面试maven的生命周期SpringBean生命周期

    2022年9月19日
    0
  • 测试工程师的分类和发展方向有哪些_测试工程师就业前景

    测试工程师的分类和发展方向有哪些_测试工程师就业前景测试工程师的分类:1、功能测试工程师2、性能测试工程师3、安全测试工程师4、自动化测试工程师5、测试开发工程师6、高级测试开发工程师7、测试专家层次:第一层:1、功能测试,按需求检测

    2022年8月4日
    2
  • jar包与war包的区别

    jar包与war包的区别ar包:对于学习java的人来说应该并不陌生。我们也经常使用也一些jar包。其实jar包就是java的类进行编译生成的class文件就行打包的压缩包而已。里面就是一些class文件。当我们自己使用maven写一些java程序,进行打包生成jar包。同时在可以在其他的工程下使用,但是我们在这个工程依赖的jar包,在其他工程使用该jar包也要导入。这是jar的里面的class文件war包:其实就是一个web程序进行打包便于部署的压缩包,里面包含我们web程序需要的一些东西,其中包括web.xml的配

    2022年5月23日
    44

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号