
Советы по написанию эксплойт-скриптов (быстрее!)
Этот репозиторий содержит список полезных фрагментов кода и советов, относящихся к написанию скриптов эксплойтов в лабораторных работах OSWE и на сертификационном экзамене.
Некоторые примеры здесь могут противоречить отдельным практикам программирования, но наша конечная цель — написать скрипт эксплойта быстро и правильно.
Раздел Фрагменты кода — отличная отправная точка, если у вас нет опыта работы с библиотекой
requestsили вы новичок в Python. В противном случае можете сразу перейти к разделу Переиспользуемый код или Советы.
requests
params)data)json)files)headers)cookies)3XX (аргумент allow_redirects)verify)proxies)SessionassertSession, чтобы не передавать его явно в каждый вызов функцииBASE_URL и формируйте нужные URL на её основеproxies, задайте переменную окружения HTTP_PROXY / HTTPS_PROXY при запуске""" для создания строки полезной нагрузки, если она содержит как одинарные ('), так и двойные кавычки (")f"") и str.format, если полезная нагрузка содержит слишком много фигурных скобок ({})import requests
def main():
print("Hello World!")
if __name__ == __main__:
main()
# For sending HTTP requests
import requests
# For Base64 encoding/decoding
from base64 import b64encode, b64decode, urlsafe_b64encode, urlsafe_b64decode
# For getting current time or for calculating time delays
from time import time
# For regular expressions
import re
# For running shell commands
import subprocess
# For multithreading
from concurrent.futures import ThreadPoolExecutor
# For running a HTTP server in the background
import threading
from http.server import HTTPServer, BaseHTTPRequestHandler
# For parsing HTTP cookies
from http import cookies
# For getting command-line arguments
import sys
requestsresp_obj = requests.get("https://github.com")
# GET method
requests.get("https://github.com")
# POST method
requests.post("https://github.com")
# PUT method
requests.put("https://github.com")
# PATCH method
requests.patch("https://github.com")
# DELETE method
requests.delete("https://github.com")
resp_obj = requests.get("https://github.com")
# HTTP status code (e.g 404, 500, 301)
resp_obj.status_code
# HTTP response headers (e.g Location, Content-Disposition)
resp_obj.headers["Location"]
# Body as bytes
resp_obj.content
# Body as a string
resp_obj.text
# Body as a dictionary (if body is a JSON)
resp_obj.json()
params)params = {
"foo": "bar"
}