sql注入1
一、函数
1、version() MYsql版本
2、user() 数据库用户名
3、database() 数据库名
4、@@datadir 数据库路径
5、@@version_compile_os 操作系统版本
6、current_user() 当前用户名(可查看权限)
7、load_file() 读文件
8、into outfile() / into dumpfile 写文件
9、group_concat(str1,str2...) 连接一个组所有的字符串,并以逗号分隔每一条数据。
二、注释,可用# --+ url 中用%23
三、union操作符
用于合并两个或多个 SELECT 语句的结果集。请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的 列的顺序必须相同。
SQL UNION 语法:
SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2
注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。
SQL UNION ALL 语法
SELECT column_name(s) FROM table_name1
UNION ALL
SELECT column_name(s) FROM table_name2
另外,UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。
四、Mysql 有一个系统数据库 information_schema,
存储着所有的数据库的相关信息,一般的, 我们利用该表可以进行一次完整的注入。以下为一般的流程。
猜数据库
select schema_name from information_schema.schemata
猜某库的数据表
select table_name from information_schema.tables where table_schema=’xxxxx’
猜某表的所有列
Select column_name from information_schema.columns where table_name=’xxxxx’
获取某列的内容
Select *** from ****
上述知识参考用例:less1-less4
五、注释
1、单行注释,#后面直接加内容 ;单行注释,--后面必须要加空格 ;
2、多行注释,/**/中间可以跨行;
3、内联注入, 内联注释是MySQL数据库为了保持与其他数据库兼容,特意新添加的功能。
为了避免从MySQL中导出的SQL语句不能被其他数据库使用,它把一些 MySQL特有的语句放在 /*! ... */ 中,
这些语句在不兼容的数据库中使用时便 不会执行。而MySQL自身却能识别、执行。
六、order by 语句
1. ORDER BY 语句用于 根据指定的列对结果集进行排序。
2. ORDER BY 语句默认 按照升序对记录进行排序。
七、字符串连接函数
1、concat(str1,str2..)函数 直接连接
2、group_concat(str1,str2..)函数 使用逗号做为分隔符
3、concat_ws(sep,str1,str2..)函数 使用第一个参数做为分隔符
八、information_schema

例:
select schema_name from information_schema.schemata;
select table_name from information_schema.schemata where table_schema = ‘zzcms’;
select column_name from information_schema.columns where table_schema = ‘zzcms’ and ‘table_name’ = ‘zzcms_zx’;
九、SQL注入的分类

十、基于联合查询的注入模式,步骤

十一、判断是否存在注入与求闭合字符
1、id = 1’ 异常
id = 1 and 1 =1 -- + 正确
id = 1 and 1=2 -- + 错误
结论:极有可能存在数字型SQL注入
ps:单引号有个特殊的作用:命令分隔符
2、id = 1’ 异常
id = 1’ and 1 =1 -- + 正确
id = 1’ and 1=2 -- + 错误
结论:极有可能存在单引号字符型SQL注入
3、id = 1" 异常
id = 1” and 1 =1 -- + 正确
id = 1” and 1=2 -- + 错误
结论:极有可能存在双引号字符型SQL注入
4、id = 1) 异常
id = 1) and 1 =1 -- + 正确
id = 1) and 1=2 -- + 错误
结论:极有可能存在括号数字型SQL注入
sql注入1的更多相关文章
- 个人网站对xss跨站脚本攻击(重点是富文本编辑器情况)和sql注入攻击的防范
昨天本博客受到了xss跨站脚本注入攻击,3分钟攻陷--其实攻击者进攻的手法很简单,没啥技术含量.只能感叹自己之前竟然完全没防范. 这是数据库里留下的一些记录.最后那人弄了一个无限循环弹出框的脚本,估计 ...
- Web安全相关(五):SQL注入(SQL Injection)
简介 SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据 ...
- 从c#角度看万能密码SQL注入漏洞
以前学习渗透时,虽然也玩过万能密码SQL注入漏洞登陆网站后台,但仅仅会用,并不理解其原理. 今天学习c#数据库这一块,正好学到了这方面的知识,才明白原来是怎么回事. 众所周知的万能密码SQL注入漏洞, ...
- 浅谈SQL注入风险 - 一个Login拿下Server
前两天,带着学生们学习了简单的ASP.NET MVC,通过ADO.NET方式连接数据库,实现增删改查. 可能有一部分学生提前预习过,在我写登录SQL的时候,他们鄙视我说:“老师你这SQL有注入,随便都 ...
- 揭开SQL注入的神秘面纱PPT分享
SQL注入是一个老生常谈但又经常会出现的问题.该课程是我在公司内部培训的课程,现在分享出来,希望对大家有帮助. 点击这里下载.
- 深入理解SQL注入绕过WAF和过滤机制
知己知彼,百战不殆 --孙子兵法 [目录] 0x0 前言 0x1 WAF的常见特征 0x2 绕过WAF的方法 0x3 SQLi Filter的实现及Evasion 0x4 延伸及测试向量示例 0x5 ...
- jdbc java数据库连接 8)防止sql注入
回顾下之前jdbc的开发步骤: 1:建项目,引入数据库驱动包 2:加载驱动 Class.forName(..); 3:获取连接对象 4:创建执行sql语句的stmt对象; 写sql 5:执行sql ...
- Entity Framework关于SQL注入安全问题
1.EF生成的sql语句,用 parameter 进行传值,所以不会有sql注入问题 2.EF下有涉及外部输入参数传值的,禁止使用EF直接执行sql命令方式,使用实体 SQL 参考: https: ...
- 关于SQL注入和如何防止
之前在笔试的时候没有很好的答出这个问题,因此我要总结一下问题,以免日后继续在这个地方跌倒,以下是自己的理解,如有错误请指出 一.什么是SQL注入 SQL注入就是服务器在根据业务去处理数据库的时候,客户 ...
- Java防止SQL注入2(通过filter过滤器功能进行拦截)
首先说明一点,这个过滤器拦截其实是不靠谱的,比如说我的一篇文章是介绍sql注入的,或者评论的内容是有关sql的,那会过滤掉:且如果每个页面都经过这个过滤器,那么效率也是非常低的. 如果是要SQL注入拦 ...
随机推荐
- vue 渲染后更新数据
this.$set(this.selGetData,level,[{},{}])this.$set(this.selGetData,1,{message:"Test add attr&quo ...
- mybatis 一对一关联 association 返回空值
mybatis 一对一关联 association 返回空值 最近学习spring mvc + mybatis开发,看的书是<Spring MVC+Mybatis开发 从入门到精通>,在学 ...
- Dividing the numbers CodeForces - 899C (构造)
大意: 求将[1,n]划分成两个集合, 且两集合的和的差尽量小. 和/2为偶数最小差一定为0, 和/2为奇数一定为1. 显然可以通过某个前缀和删去一个数得到. #include <iostrea ...
- echarts常用方法,item小坑(二)
在echarts折线图使用过程中,我们会遇到折线拐点symbol的问题.这个问题是在版本3.8.5引用时发现的.折线图在支持legend显示的情况下需要考虑. 问题描述如下:如果采用echarts提供 ...
- 为什么Java的main方法必须是public static void?
一. void 如下,像C, C++一样,将返回值类型改为int,再返回一个0,虽然编译通过,但是运行时会报错. 找到一种可理解的解释:方法的副作用和返回值类型.(http://www.cnblogs ...
- sqlserver isnull函数
isnull(参数1,参数2),判断参数1是否为NULL,如果是,返回参数2,否则返回参数1. select ISNULL(null,'helloword') 返回helloword字符串select ...
- Java基本类型内存字节数
基本类型 字节数 位(bit) 取值范围 byte 1 1*8 -128~127 short 2 2*8 int 4 4*8 long 8 8*8 float 4 4*8 double ...
- java中线程的三种实现方式
一下记录下线程的3中实现方式:Thread,Runnable,Callable 不需要返回值时,建议使用Runnable:有返回值时建议使用Callable 代码如下所示: package com.f ...
- 通讯录管理系统(C语言)
/* * 对通讯录进行插入.删除.排序.查找.单个显示功能 */ #include <stdio.h> #include <malloc.h> #include <str ...
- Maskrcnn遇到的坑
第一个要讲maskrcnn 中keras 升到2.1 然后 在线程问题上要把workers设置成1,是否使用线程设置成false 然后调用模型的时候要把模型和加载文件放到一个目录下