0


掌控安全腾龙杯2024(WEB方向)

文章目录

文笔有限,大佬轻喷。

1. 签到:这是一个登录页面

在这里插入图片描述
按照页面提示,拼接访问:/login。
在这里插入图片描述构造请求包,以json格式传输,返回一串JWT密文。
在这里插入图片描述JWT密文解码如下:
在这里插入图片描述

拿到JWT密文之后思路突然就断了。尝试查看页面源码、访问robots文件等寻找hint,在robots文件中得知还存在/fulage
在这里插入图片描述拼接访问:/fulage
在这里插入图片描述
尝试构造请求包,发现需要token。
在这里插入图片描述将/login处获得的token构造后直接发送,提示我们不是admin。
在这里插入图片描述尝试修改JWT对应的payload部分,即伪造用户。

在这里插入图片描述
再次发送JWT,拿到flag。
在这里插入图片描述

2. web2

在这里插入图片描述
构造请求包,提示访问/admin
在这里插入图片描述
访问/admin,返回FORBIDDEN
在这里插入图片描述
响应包中含有:

Server: gunicorn/20.0.4

,存在请求走私漏洞。参考链接:gunicorn请求走私漏洞

n version 20.0.4 of gunicorn there is a request smuggling vulnerability which works regardless of which proxy is used in front of gunicorn. It is caused by special parsing of the Sec-Websocket-Key1 header.

在 gunicorn 的 20.0.4 版本中,存在一个请求走私漏洞,无论在 gunicorn 前面使用哪个代理,该漏洞都会起作用。这是由 Sec-Websocket-Key1 标头的特殊解析引起的。

尝试构造请求包。
在这里插入图片描述
伪造UA。
在这里插入图片描述
第二段请求中拼接访问:/fl4g
在这里插入图片描述
伪造XFF,拿到flag。
在这里插入图片描述

3. 这又是一个登录页面

在这里插入图片描述任意输入账号密码,响应包中返回一串JWT,并重定向到/fl4g
在这里插入图片描述
对JWT进行解码,可以查看到相应的信息。
在这里插入图片描述
发送相应的请求信息,权限不足。
在这里插入图片描述
尝试寻找secert,无果。在robots文件找找到公钥信息。
在这里插入图片描述

JWT最常用的两种算法是HMAC和RSA。HMAC(对称加密算法)用同一个密钥对token进行签名和认证。而RSA(非对称加密算法)需要两个密钥,先用私钥加密生成JWT,然后使用其对应的公钥来解密验证。
如果将算法RS256修改为HS256,后端代码会使用公钥作为秘密密钥,然后使用HS256算法验证签名。由于公钥有时可以被攻击者获取到,所以攻击者可以修改header中算法为HS256,然后使用RSA公钥对数据进行签名。如果将alg参数改成HS256,这样就将算法RS256修改为HS256,让服务器不使用对称加密,转而使用非对称加密算法。

所以下一步思路是修改算法,使用公钥对数据进行加密,参考:JWT攻击,编写脚本如下:

import jwt

public =open('public.pem','r').read()print(jwt.encode({"account":"@dministr@t0r"}, key=public, algorithm='HS256'))

注意导入PyJWT模块,直接运行会报错。
在这里插入图片描述
直接定位到相应模块,注释掉关键代码即可。

在这里插入图片描述
运行代码,拿到伪造的JWT密文。
在这里插入图片描述
构造请求包并发送,拿到flag。
在这里插入图片描述

4. html练习生

在这里插入图片描述
存在登录框,习惯性测试SQL注入、弱口令,均无果,来到注册处,注意UserID必须为数字。
在这里插入图片描述
注册完账号后直接登录。
在这里插入图片描述

  • “修改个人信息”页面在这里插入图片描述
  • “登录日志查看”页面在这里插入图片描述

“登录日志查看”处可以登录UserID、登录IP地址以及登录时间,可以尝试二次注入。在没有源码的情况下,实现二次注入相对较难。但可以尝试分析后端功能:在登录系统后,会记录登录IP、UserID,那么大概率存在一个查询这些信息并将其插入到相应表中的动作。

UserID可控,但是只能为数字,猜测后端使用了

is_numerice()

函数,该函数识别16进制。那么就将插入、查询信息的流程连贯起来了。

mysql> insert into admin (id,name,pass) values ('3',0x61646D696E27313131,'11');
Query OK, 1 row affected (0.00 sec)

mysql> select * from admin;
+----+-----------+-------+
| id | name      | pass  |
+----+-----------+-------+
|  1 | admin     | admin |
|  2 | admin'111 | 11111 |
|  3 | admin'111 | 11    |
+----+-----------+-------+
4 rows in set (0.00 sec)
  • 获取表名
','a',(select group_concat(table_name) from information_schema.tables where table_schema=database()),'c')#

将其转换为十六进制,注意加上

0x

前缀符号。
在这里插入图片描述在这里插入图片描述

  • 获取列名
','a',(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='injectflag'),'c')#

在这里插入图片描述

  • 获取数据
','a',(select group_concat(fl4g) from injectflag),'c')#

在这里插入图片描述


本文转载自: https://blog.csdn.net/qq_46548764/article/details/136846983
版权归原作者 Zue3r 所有, 如有侵权,请联系我们删除。

“掌控安全腾龙杯2024(WEB方向)”的评论:

还没有评论