宽字节注入
造成宽字节注入的原因,主要是因为使用了宽字节编码,导致一些字符被绕过
当我们注入 1' 时,若被转义成 1\' ,注入就失效了( \' 的url编码为%5c%27)
当服务器的数据使用GBK编码时我们注入%df%5c%27,其中 %df%5c 被GBK编码成 縗 ,%27编译成 ' ,而在服务端初次处理时处理为 %df\' ,此时程序认为 ' 号已被转义,但传入数据库时 %df\ 组合成了 縗,因此就成功绕过了转义
宽字节注入的靶场以及writeup
https://www.jianshu.com/p/ede6aac5ba8c
二次编码注入
造成二次编码注入的原理主要是因为服务器处理字符串的顺序不对
当输入 id=1%27 --url编码--> id=1' --转义--> id=1\' (失败)
如果程序在转义之后再次urldecode编码,就会造成二次编码注入
当输入 id=1%2527 --url编码--> id=1%27 --转义--> id=1%27 --urldecode()--> id=1' (成功注入)
网友评论