首页
学习
活动
专区
圈层
工具
发布

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

以上是一点关于多字节编码的小知识,只有我们足够了解它的组成及特性以后,才能更好地去分析它身上存在的问题。 说了这么多废话,现在来研究一下在SQL注入中,字符编码带来的各种问题。...暂且称之为phithon内容管理系统v1.0,首先先新建一个数据库,把如下压缩包中的sql文件导入: 测试代码及数据库:http://pan.baidu.com/s/1eQmUArw 提取密码:75tu...在这个sql语句前面,我们使用了一个addslashes函数,将$id的值转义。这是通常cms中对sql注入进行的操作,只要我们的输入参数在单引号中,就逃逸不出单引号的限制,无法注入,如下图: ?...把phithon内容管理系统中set names修改成gb2312: ? 结果就是不能注入了: ? 有些同学不信的话,也可以把数据库编码也改成gb2312,也是不成功的。...比如,我们的phithon内容管理系统v2.0版本更新如下: ? 已经不能够注入了: ? 在我审计过的代码中,大部分cms是以这样的方式来避免宽字符注入的。

1.2K31
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    SQL必知必会:SQL 中的连接

    连接 大家一定用过 LEFT JOIN、RIGHT JOIN 这样的操作符,这实际上就是连接,SQL 中的连接是多表操作的基础之一,对连接不了解很难去查询好多表。...本文是基于 SQL 99 标准中的连接查询,还有其他 SQL 标准,有些语句并不适用其他 SQL 标准。...交叉连接 交叉连接 SQL99 采用的是 CROSS JOIN,常听听说的笛卡尔乘积其实是 SQL92 中的,而交叉连接实际上就是 SQL92 中的笛卡尔乘积,也就是说 交叉连接 == 笛卡尔乘积。...select * from t1 CROSS JOIN t2 CROSS JOIN T3 自然连接 自然连接则是 SQL92 标准中的等值连接,自然连接是一种关联查询方式,它不需要使用 ON 子句指定连接条件...t2.field AND t2.field 一般来说在 SQL99 中,我们需要连接的表会采用 JOIN 进行连接,ON 指定了连接条件,后面可以是等值连接,也可以采用非等值连接。

    1.3K20

    sql中decode的用法_sql求和函数

    decode() 函数的语法: 1 Select decode(columnname,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值) 2 3 From talbename 4...5 Where … 其中:columnname为要选择的table中所定义的column;    缺省值可以是你要选择的column name本身,也可以是你想定义的其他值,比如Other等; 主要作用...) sale from output 若只与一个值进行比较: Select monthid ,decode(sale, NULL,‘---’,sale) sale from output decode中可使用其他函数...SELECT NAME,NVL(TO_CHAR(COMM),'NOT APPLICATION') FROM TABLE1; 如果用到decode函数中: select monthid,decode(nvl...(sale,6000),6000,'NG','OK') from output;   sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1, 用如下的SQL语句取较小值: select monthid

    2.4K40

    Java安全编码之SQL注入

    随着互联网的发展,Java语言在金融服务业、电子商务、大数据技术等方面的应用极其广泛。Java安全编码规范早已成为SDL中不可或缺的一部分。...本文以Java项目广泛采用的两个框架Hibernate和MyBatis 为例来介绍,如何在编码过程中避免SQL注入的几种编码方法,包括对预编译的深度解析,以及对预编译理解的几个“误区”进行了解释。...备注,本文是Java语言安全编码会是系列文章的第一篇。 0x01框架介绍 目前Hibernate和MyBatis为java项目广泛采用的两个框架。...我们使用/inject 接口,p为接受外部的参数,来查询User的列表,使用fastjson来格化式输出。 ? 我们回到dao层。 1)SQL注入 SQL注入我们使用字符串拼接方式: ?...从MySQL的查询日志就可以开看到。可以看到Prepare的语句。一样是存在SQL注入的。 ? 我们使用占位符的方式: ? 上面的语句就不存在SQL注入了。

    1.9K10

    SQL中的DBLINK

    DBLINK的定义 当我们要跨本地数据库,访问另外一个数据库表中的数据时,本地数据库中就必须要创建远程数据库的DBLINK,通过DBLINK本地数据库可以像访问本地数据库一样访问远程数据库表中的数据。...QAZ1234' Go 执行完后我们会看到在SSMS的服务器对象下面有一个创建好的DBLINK连接,如下图: DBLINK的作用 前面的定义已经说明,通过DBLINK本地数据库可以像访问本地数据库一样访问远程数据库表中的数据...DBLINK示例 以本地Customers表和远程数据库192.168.0.39里SQL_Road数据库下的Orders表为例 Customers表 远程数据库中的Orders表 我们想用本地的Customers...表关联远程数据库192.168.0.39里SQL_Road数据库下的Orders表里的数据,可以这样写SQL: SELECT c.姓名,o.订单日期 FROM Customers c JOIN [192.168.0.38...].SQL_Road.dbo.Orders o ON c.客户ID=o.客户ID 结果如下: 这样我们就将本来隔绝的两个表通过DBLINK关联上了。

    48310

    SQL 质量管理 | SQL 猎手:精准识别与过滤业务 SQL

    SQLE 3.0 版本已经发布 全新的界面设计 ✨ 欢迎体验 1什么是 SQLE? SQLE 是一款全方位的 SQL 质量管理平台,覆盖开发至生产环境的 SQL 审核和管理。...2主要功能介绍 企业版 管控列表支持按 SQL 发送端过滤来源 如果您通过慢日志记录了各种执行的 SQL(如开发调试、测试和业务执行的 SQL 等),但只想关注特定的 SQL,如应用程序执行的业务 SQL...可以利用慢日志记录的 IP 进行过滤,排除其他不相关的 SQL 审核记录。...往期版本 SQL 质量管理 | SQLE 2.2310.0 来啦! SQLE 3.0 正式发布!SQL 质量提升官持续招募中 SQL 审核 | SQLE 2.2309.0 来啦!...测评 如何使用 SQLE 进行开发阶段 SQL 审核 关于 SQLE 一个支持多种不同类型数据库,覆盖事前控制、事后监督、标准发布场景,帮助您建立质量规范的 SQL 全生命周期质量管理平台。

    75650

    SQL中的WITH...AS

    在SQL中的AS重命名与ORDER BY排序中我们知道,在SQL中可以利用AS对字段进行重命名,让查询结果更加清晰明了。...而在我们学习了SQL中的基本查询语句后,我们也会开始写稍微复杂一些的SQL语句来查询与分析数据。...而在很多时候并不是所有的数据信息查询可以简单的只用一条SQL语句来完成,这其中最常见的就是嵌套查询,也就是在一个查询结果的基础上再进一步查询想要的信息。...利用WITH...AS我们可以首先把SQL中的查询结果存储在一个临时的数据表中,从而可以继续在这个数据表中更一步的查询数据。...WITH...AS使用WITH...AS的SQL查询语句一般有如下结构:WITH 临时数据表 AS(SELECT...)SELECT...下面我们对常用的Customers数据表稍作修改: 在这个表中增加客户的订单数量

    36910

    【SQL技能】浅谈数据分析中的SQL

    关于如何利用SPSS从数据库中挑选自己所需要的数据参见Syntax代码旅途。此外,在EXCEL的多表操作中也涉及相关SQL语句,如数据透视表的应用等。...·对整数类型列进行搜索 这类问题主要针对字符变量的查询而言,对应的字符变量如果有相应的编码对应,直接将编码设置为查询条件将比直接查询字符变量来得更加迅速。...数据采集中常用的SQL语句 相同的SQL语句运用到不同数据库中会有略微的差别,对字符变量的要求,相关函数的变化,以及语法规则的不同等等,例如:oracle数据库中对字段命名别名时不需要as 字符,没有...用SQL语句找出表名为Table1中的处在ID字段中1-200条记录中Name字段包含w的所有记录 select * from Table1 where id between 1 and 200 and...两个结构完全相同的表a和b,主键为index,使用SQL语句,把a表中存在但在b表中不存在的数据插入的b表中 insert into b select * from a where not exists

    2.2K50

    当SQL注入遇到诡异的编码问题

    前言 最近给甲方爸爸做渗透测试时发现了一个诡异的SQL注入,之所以说诡异,是因为该系统数据库连接编码与实际的数据库编码不一致,并且数据库表字段名使用了中文的字段名,导致通过正常手段无法获取到数据库数据。...6、看到这里心里大喜,显然这里应该存在基于错误显示的SQL注入,话不多说,SQLMAP一把梭,成功跑出了注入点并且得知该数据库用户是管理员。...而图11中红框部分编码正常部分恰好是burp乱码部分,所以推测SQLMAP应该是使用了gbk解码显示。 ? 13、看到这里,我有一句mmp不知当讲不当讲。...对的,你没有看错,确实是编码成了一个不正常的字符,SQLMAP正确识别出了编码,成功跑出了数据: sqlmap -r sql.txt -p sid --tamper base64encode -T XXX_INFO_USER...原理解析 1、从上面实验中,我猜测WEB中间件连接数据库的编码为gbk,而数据库字段名的实际编码为utf8。

    2.7K20

    sql中select into的用法_sql语句insert into用法

    大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说sql中select into的用法_sql语句insert into用法,希望能够帮助大家进步!!!...1.select into from语句: 注意内容:要求目标表A不存在,因为在插入时会自动创建表A,并将B中指定字段数据复制到A中。...,如果B有主键而且不为空,则 field1, field2...中必须包括主键 (3)注意语法,不要加values,和插入一条数据的sql混了,不要写成:insert into B (field,field2...) values (1,2) 正确写法SQL: 此代码由Java架构师必看网-架构君整理 insert into B (field,field1,...) select value,value1,...... from A 或 insert into B select * from A 今天文章到此就结束了,感谢您的阅读,Java架构师必看祝您升职加薪,年年好运。

    3.4K30

    SQL Server 权限管理

    权限管理 什么是权限管理? SQL server的安全机制 服务器级角色 数据库级角色 对象级角色 2. 创建用户 赋予权限 最重要的一步骤 1. 权限管理 什么是权限管理?...权限管理是数据库管理中的一个关键方面,它涉及到确定哪些用户或数据库主体(如登录、用户、角色等)有权执行特定的操作。...服务器级角色 在SQL Server中,有一些预定义的服务器级角色,这些角色具有不同的权限级别 服务器角色 描述 sysadmin 具有服务器上所有权限的最高权限角色。成员可以执行任何操作。...processadmin 管理正在运行的进程,但不能查看或更改这些进程的查询。 setupadmin 管理 SQL Server 安装过程的权限。...db_accessadmin 访问权限 db_securityadmin 管理数据库中的权限、角色和对象的权限。 db_ddladmin 管理数据库中的任何 DDL 操作。

    1.1K10

    sql中declare的用法_sql局部变量

    大家好,又见面了,我是你们的朋友全栈君。 换工作了,以后主要和SqlServer打交道了,仿佛回到了大学,不知道学校的饭还是那么好吃又便宜吗?...北京的饭好贵;不知道门口那家板面的生意是不是还是那么红火,好想再去吃一碗。。。...使用对象:类、接口、变量、方法 protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。...注意:不能修饰类(外部类) 举个例子 比如: for(int 1=0;i<10;i++){ ... ... ... } 此时int变量的范围知识在这个for循环里,一旦离开这个循环,int变量i将不存在...而SqlServer中的declare类型,可以理解为一个全局变量,像这样: 在一个全局类里面定义公共静态变量 public class Global {   public static int

    2.3K30

    管理sql server表数据_sql server如何使用

    大家好,又见面了,我是你们的朋友全栈君。 表是SQL Server中最基本的数据库对象,用于存储数据的一种逻辑结构,由行和列组成, 它又称为二维表。...例如,在学生成绩管理系统中,表1–是一个学生表(student)。 (1)表 表是数据库中存储数据的数据库对象,每个数据库包含了若干个表,表由行和列组成。例如,表1- -由6行6列组成。...---- 创建数据库最重要的一步为创建其中的数据表,创建数据表必须定义表结构和设置列的数据类型、长度等,下面,我们介绍SQL Server系统数据类型,如表2–所示。...我们以学生成绩管理系统的student(学生表)为例介绍表结构设计。 在student表中,只有stno列能唯一标识一个学生,所以将stno列设为主键。student的表结构设计如表3–所示。...(1)启动“SQL Server Management Studio”,在“对象资源管理器”中展开“数据库”节点,选中“stsc”数据库,展开该数据库,选中表,将其展开,选中表“dbo.xyz”,单击鼠标右键

    3.8K10

    SQL语句大全中的sql语句备忘录—sql日常使用指北

    privileges;显示数据库版本 mysql> select version();显示当前时间 mysql> select current_date;查看数据库状态 mysql> status;查看所有编码...u root -p dbname filename.sql 备份数据库: mysqldump -u root -h host -p dbname > backdb.sql备份数据库中的某个表 mysqldump...后不能直接跟一个变量,所以在实际应用中只有这样的进行特殊的处理。...因为这样可以避免 top的字段如果是逻辑索引的,查询的结果后实际表中的不一致(逻辑索引中的数据有可能和数据表中的不一致,而查询时如果处在索引则首先查询索引)14、说明:前10条记录select top...转载本站文章《SQL语句大全中的sql语句备忘录—sql日常使用指北》,请注明出处:https://www.zhoulujun.cn/html/DB/sql/2015_0821_242.html

    1.9K20

    SQL优化——隐式字符编码转换

    点击蓝字 关注我们 MySQL中我们知道有: 如果对索引字段做函数操作,可能会破坏索引值的有序性,因此优化器就决定放弃走树搜索功能。 隐式类型转换也会导致放弃走树搜索。...tradeid=110717;等价于:mysql> select * from tradelog where CAST(tradid AS signed int) = 110717; 下面来看看隐式字符编码转换导致的一个慢...SQL:: 业务上有个SQL执行需要1.31秒: 看看执行计划: 从执行计划分析看出问题出在r表也就是 h_merge_result_new_indicator 表全表扫描,查看该表的表结有联合索引...该例子是隐式字符编码转换,它们都跟其他条件索引上使用函数一样,因为要求在索引字段上做函数操作而导致了全索引扫描。...相关文章:陈家睿,公众号:数据和云SQL优化——IN和EXISTS谁的效率更高 ---- 墨天轮原文链接:https://www.modb.pro/db/153885?

    97330

    SQL中的DECIMAL()函数

    大家好,又见面了,我是你们的朋友全栈君。 Decimal为SQL Server 数据类型,属于浮点数类型。一个decimal类型的数据占用了2~17个字节。...Decimal 数据类型Decimal 变量存储为 96 位(12 个字节)无符号的整型形式, Decimal类型消除了发生在各种浮点运算中的舍入误差,并可以准确地表示28个小数位。...Decimal数据类型可以在Visual Studio编辑器中使用,只要在一个浮点类型的值后加一个大写或小写的M,则编辑器会认为这个浮点类型的值是一个Decimal类型。...这种128位高精度十进制数表示法通常用在财务计算中。要注意的是,在.NET环境中,计算该类型的值会有性能上的损失,因为它不是基本类型。...decimal 的 SQL-92 同义字是 dec 和 dec(p, s)。numeric 的功能相当於 decimal。

    3.1K10
    领券