API Badge
API 01
API 01
地址: https://pentesterlab.com/exercises/api_01/course
要求: In this challenge, your goal is to find the vulnerability that will allow you to access the key for this exercise. The user admin@libcurl.so has stored the key as a secret in their account. Try to retrieve it.
意思就是找到这个用户的保存的密码?

主要有两个功能,登陆和注册。
开始测试注册:
注册之后,是单个用户

测试发现了是可以保持密码的

我们的目标是 admin@libcurl.so保存的密码,那就看看去查询密码的逻辑是什么

发现查询的请求,GET 带了密码id
http://api-ptl-b6811efb-8292a0bb.libcurl.so/api/secrets/6
结果就是如上图所示,有密码的name和value值,拿尝试修改这个密码id,看看

直接更改id,得到404,但是在页面上点进去会成功,说明程序可能有判断refer之类的东西。 我们看从页面点进去带了说明参数。

直接输入URL的请求

可以发现带有认证的字段的
token为: Token eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NSwiZXhwIjoxNjMxNTkwMzQ5fQ.j89UTxTHueGNdtNdC-AaKoCfrJkd4ptcthyDafIMHxM

可以看到是JWT sha256,为何后面跟着一个id 5? 这个是用户id? 再测试一下。
拿到另外一个token:
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NSwiZXhwIjoxNjMxNTkwNTc1fQ.9zJqDWet77dm_fKLuDq-DB1w8KXVm333Fq2yGcj_aZo
解密:
{“typ”:“JWT”,“alg”:“HS256”}{“id”:5,“exp”:1631590575}s&ֺvgʮઌp՛}Țf

那就是说过期时间在变,id 这个没有变化。
那我换一个账号,是否id为变,如果变了那就说明这个是用户id
我们在setting里面修改密码等操作,就可以确认这个是用户id
