
Dicas sobre como escrever scripts de exploit (mais rápido!)
Este repositório contém uma lista de trechos e dicas úteis referentes à escrita de scripts de exploit nos laboratórios e no exame de certificação OSWE.
Alguns exemplos aqui podem ir contra certas práticas de programação, mas nosso objetivo final é escrever o script de exploit de forma rápida e correta.
A seção Trechos de Código é um ótimo lugar para começar se você não tem experiência no uso da biblioteca
requestsou é novo em Python. Caso contrário, sinta-se à vontade para pular para a seção Código Reutilizável ou para a seção Dicas.
requests
params)data)json)files)headers)cookies)3XX (Usando o argumento allow_redirects)verify)proxies)SessionassertSession global para que ele não precise ser explicitamente passado a cada chamada de funçãoBASE_URL e construa as URLs necessárias a partir delaproxies, defina a variável de ambiente HTTP_PROXY / HTTPS_PROXY ao executar""" para criar a string do payload se ela contiver aspas simples (') e duplas (")f"") ou str.format se o payload contiver muitas chaves ({})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()