
Suggerimenti su come scrivere script di exploit (più velocemente!)
Questa repository contiene un elenco di snippet e suggerimenti utili riguardanti la scrittura di script di exploit nei laboratori e nell'esame di certificazione OSWE.
Alcuni esempi qui riportati potrebbero andare contro alcune pratiche di programmazione, ma il nostro obiettivo finale è scrivere lo script di exploit in modo rapido e corretto.
La sezione Frammenti di codice è un ottimo punto di partenza se non hai esperienza nell'uso della libreria
requestso sei nuovo a Python. In caso contrario, puoi passare direttamente alla sezione Codice riutilizzabile o alla sezione Suggerimenti.
requests
params)data)json)files)headers)cookies)3XX (usando l'argomento allow_redirects)verify)proxies)SessionassertSession globale in modo che non debba essere passato esplicitamente a ogni chiamata di funzioneBASE_URL e costruire gli URL necessari a partire da essaproxies, imposta la variabile d'ambiente HTTP_PROXY / HTTPS_PROXY all'esecuzione""" per creare la stringa del payload se contiene sia apici singoli (') che doppi apici (\")f"") o str.format se il payload contiene troppe graffe ({})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