SQL注入与绕过WAF | 您所在的位置:网站首页 › mysql怎么看表的注释 › SQL注入与绕过WAF |
靶场的搭建就不讲了,无非就是安装一个安全狗,跟着网上的教程搞就完事了 那为什么是安全狗呢?根据迪总的说法是宝塔,之类的,比较难,要一步一个脚印,先吃下酒菜,那就是安全狗,先把简单的绕过,困难的就慢慢来 好的,那就开始 这个是sqlilibs的靶场,那么根据以往的规范,我们先来判断存不存在注入点,是吧 页面返回 很明显是被拦截了的 那怎么办呢,我不能判断这个网站有没有注入点,我怎么注入,是吧 AND 1=1是会被拦截的,为什么非要用? 网页返回 直接ID=9999,数据库肯定是没有的,为什么网页会返回错误,那是因为网站查询了数据库,既然查询了数据库,那么就存在sql注入,没有问题吧,很简单是吧,当然可以这样子: http://localhost/1/Less-1/index.php?id=1 /*!14400and*/ 1=1,也行,内联注入14400是版本号,大于或等于这个版本号是有意义的,否则没有用 当然了,也可以http://localhost/1/Less-1/index.php?id=1'|| -1=-1+1--+ 下来我们ORDER BY 来试试 网页返回 很难受,是吧,我们何尝不换一个思路?GROUP BY行不行? 当然:http://localhost/1/less-1/index.php?id=1%27%20order/*//*/+by%203%20--+ 网页返回 很成功的绕过了,是吧,那么显存位是1,2,3 我们来联合查询一下 网页返回 又被拦截了是吧 首先我们来看看单独写一个UNION拦截吗? 网页返回 没有拦截是吧 单独写一个SELECT应该也不拦截 也不拦截 很奇怪,那么下面我们应该做什么? 目的是:不让他们在一起,并且执行SQL语句 还是单个union不拦截 单个select不拦截 只要union select 结合就被拦截,还是跟order by绕过一样添加数据绕过安全狗的匹配 http://localhost/1/Less-1/index.php?id=-1' union/*!88888cas*//*/%0a*a*/select/**/1,2,3--+ 十分的简单 下来就是HTTP参数污染 首先来看看数据库的特性 都知道,/**/是注释里面的东西 一般里面的东西不会被执行 但是/*!*/就可以被执行,但是你要是问我为什么,我也不知道,迪总这样讲的 还有一点,有些东西就是需要特定的编码BE LIKE 迪总这时候CTRL C+V搞的注入语句,特殊符号是URL编码的,但是迪总把编码还原了之后我们可以发现是被拦截了的,这还是一个玄学问题,哈
这样写就不会被拦截 http://localhost/1/Less-1/index.php?id1/**&id=-1%20union%20select%201,2,3%23*/--+ 很简单 /***/这么写,安全狗是不会对其检测的,不理解的话,我们来看看MYSQL数据库中是怎么理解这段语句的 啊,没有数据的执行 因为有了参数污染,会执行:1%20union%20select%201,2,3%23*/ 这是他的执行语句 这句话总结十分到位 安全狗以为是注释 但是我发现一个很奇怪的点 id=-1的时候没有问题 但是当ID=1的时候就出现了问题,被拦截了 就这样 还有这个参数污染,怎么搞? 我们用的靶场是WEB服务器下第一个,获取到的参数是Last,最后一个,那么我们就可以使用 给他绕过,payload是可以的,但是 http://localhost/1/Less-1/index.php?id=1&id=-1' union select 1,2,3--+,就不行 很难受 但是有办法,结合上文的/***/就OK啦 http://localhost/1/Less-1/index.php?id=1&id=-1/**%21%20union%20select%201,2,3%23*/--+ 但是显示不出来什么有用的东西 原因应该是没有闭合 闭合之后,就有一点奇怪了 还是报错 http://localhost/1/Less-1/index.php?id=1&id=1/**%21%20union%20select%201,2,3%23*/--+ 迪总总结的也差不多 那么今天就到这里 |
CopyRight 2018-2019 实验室设备网 版权所有 |