修炼waf(二)

接着我上一篇绕waf文章,这篇主要总结一下利用mysql数据库的注释来绕过waf

首先介绍一下mysql数据库的注释符

在MySQL里,多行解释 是 /* */,这个是SQL的标准 但是MySQL扩张了解释 的功能比如注释/**/在起头的/*后头加了!变成了/*!*/

我们叫它为内联注释

又比如我们在内联注释!后加50001变成了/*!50001*/,那么这又是什么意思呢?
这里的50001表示的是 数据库是5.00.01以上版本,该语句才会被推行

我们在绕waf过程中,在构造payload绕过的同时还要注意把我们预期的sql语句可以带入数据库顺利执行,那么我们看上述三种注释在mysql中的运行情况:

可以看到我们在原先的select * from wy;基础上加上了注释符,它还会正常执行我们的sql语句

当前测试数据库版本为5.5,所以我们/*!50001 select * from wy */; 可以顺利执行

但/*!56001 select * from wy */; 不能顺利执行,原因就是我上面提到过的,这句要执行条件必须是数据库版本大于等于5.60.01,而我们当前版本为5.5

所以不能成功执行

了解了上面的东西后,我们便可以尝试使用注释符莱绕过waf了

这里测试用的是3.0版本的安全狗

payload如下:

 

原文地址:https://www.cnblogs.com/cn-36/p/6723688.html