• STATISTIQUES
  • Il y a eu un total de 2 membres et 9462 visiteurs sur le site dans les dernières 24h pour un total de 9 464 personnes!


    Membres: 2 434
    Discussions: 3 585
    Messages: 32 832
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [FR] Asp-php
    Tutoriaux sur ASP, PHP, ASP.net, XML, SQL, Javascript, HTML, VML - Scripts et ressources pour webmasters - Forums d&#...
    Programmation
    [EN] Hack this site
    Basic: 11, Realistic: 17, Application: 18, Programming: 12, Extbasic: 14, Javascript: 7, Stego: 17
    Challenges
    [FR] dcode
    dcode.fr est le site indispensable pour décoder des messages, tricher aux jeux de lettres, résoudre des énigmes...
    Outils / Add-on
    [FR] WeChall
    Audio: 3, Coding: 11, Cracking: 9, Crypto: 18, Encoding: 11, Exploit: 44, Forensics: 1, Fun: 6, HTTP: 6, Image: 8, Java:...
    Challenges
    [FR] Infomirmo
    Challenge présenté sous la forme de 6 niveaux de difficultés diverses et variées avec chacun plusieurs chall...
    Challenges
    [FR] Le site du zero
    Découvrez gratuitement la programmation (C, C++, PHP, MySQL, XHTML, CSS...), Linux, le Mapping, la modé...
    Programmation
    [FR] Zmaster
    Articles sur l'informatique, le hacking, le P2P, les divx, les astuces windows XP, les GSM, Emule, la cryptograph...
    Hacking

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!




Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[python] Buffer Overflow : EBP et EIP
25-10-2014, 12h35 (Modification du message : 25-10-2014, 13h35 par St0rn.)
Message : #1
St0rn Hors ligne
Newbie
*



Messages : 20
Sujets : 5
Points: 17
Inscription : Apr 2012
[python] Buffer Overflow : EBP et EIP
C'est un petit projet que j'ai fait après avoir étudié le plugin byakugan pour winDBG.
Une fonctionnalitée qui perméttait à partir d'une chaine générée par pattern_create.rb de metasploit, de déterminer après un sigsegv, la taille du junk qui permet d'avoir un contrôle sur EBP et EIP.

Étant jaloux de ne pas l'avoir sur linux, j'ai recrée cette fonctionnalitée (j'ai aussi recrée pattern_create.rb dans le script) en un script python.

/!\ Le script utilise python-ptrace /!\

Voici le dépot github (l'adresse de téléchargement de python-ptrace y est):

https://github.com/St0rn/pentest-project...checkfault

Code PYTHON :

#Checkfault
#Author: St0rn
#Use python-ptrace
#
#Usage: checkfault.py [Type] [Binary] [Length]
#
#!/usr/bin/env python

import os
import sys
from ptrace.debugger.debugger import PtraceDebugger
from ptrace.debugger.child import createChild
from ptrace.tools import locateProgram

def generatejunk(length):
        taba = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
        tabb = "abcdefghijklmnopqrstuvwxyz"
        tabc = "0123456789"

        junk = ""
        a = 0
        b = 0
        c = 0

        while len(junk) < length:
                junk += taba[a] + tabb[b] + tabc[c]
                c += 1
                if c == len(tabc):
                        c = 0
                        b += 1
                if b == len(tabb):
                        b = 0
                        a += 1
                if c == len(tabc):
                        a = 0
        return junk

#Find EIP control offset Function
def checkfault(binary, types, length):
        #types = arg, get
        def trace(program):
                env = None
                return createChild(program, False, env)

        if types == "arg":
                junk = generatejunk(length)
                payload = []
               
                payload.append(locateProgram(binary))
                payload.append(junk)
                pid = trace(payload)
               
                debug = PtraceDebugger()
                ps = debug.addProcess(pid, True)
               
                ps.cont()
                try:
                        signal = ps.waitSignals()
                        print "\n%s Detected!" % signal
                        addr_eip = hex(ps.getInstrPointer())
                        addr_ebp = hex(ps.getFramePointer())
                        ebp = addr_ebp[8] + addr_ebp[9] + addr_ebp[6] + addr_ebp[7] + addr_ebp[4] + addr_ebp[5] + addr_ebp[2] + addr_ebp[3]
                        eip = addr_eip[8] + addr_eip[9] + addr_eip[6] + addr_eip[7] + addr_eip[4] + addr_eip[5] + addr_eip[2] + addr_eip[3]
                except:
                        print "\nNo SIGSEGV detected!\nMaybe the program is not vulnerable\nOr try with more bytes\n"
                        debug.quit()
                        sys.exit()

                try:
                        print "\nControl of EBP after " + str(junk.index(ebp.decode("hex"))) + " Bytes"
                except:
                        print "\nNo Control of EBP"

                try:
                        print "Control of EIP after " + str(junk.index(eip.decode("hex"))) + " Bytes\n"
                except:
                        print "No Control of EIP\n"

        if types == "get":
                junk = generatejunk(length)
                payload = []
               
                payload.append(locateProgram(binary))
                pid = trace(payload)
               
                debug = PtraceDebugger()
                ps = debug.addProcess(pid, True)
               
                ps.cont()
                try:
                        f = open("/tmp/junk" , "w")
                        f.write(junk)
                        f.close()
                        print "\n File /tmp/junk has been created\n"
                        signal = ps.waitSignals()
                        print "\n%s Detected!" % signal
                        addr_eip = hex(ps.getInstrPointer())
                        addr_ebp = hex(ps.getFramePointer())
                        ebp = addr_ebp[8] + addr_ebp[9] + addr_ebp[6] + addr_ebp[7] + addr_ebp[4] + addr_ebp[5] + addr_ebp[2] + addr_ebp[3]
                        eip = addr_eip[8] + addr_eip[9] + addr_eip[6] + addr_eip[7] + addr_eip[4] + addr_eip[5] + addr_eip[2] + addr_eip[3]
                except:
                        print "\nNo SIGSEGV detected!\nMaybe the program is not vulnerable\nOr try with more bytes\n"
                        os.system("rm /tmp/junk")
                        debug.quit()
                        sys.exit()

                os.system("rm /tmp/junk")
                try:
                        print "\nControl of EBP after " + str(junk.index(ebp.decode("hex"))) + " Bytes"
                except:
                        print "\nNo Control of EBP"

                try:
                        print "Control of EIP after " + str(junk.index(eip.decode("hex"))) + " Bytes\n"
                except:
                        print "No Control of EIP\n"

        if len(sys.argv) == 4:
                checkfault(sys.argv[2], sys.argv[1], int(sys.argv[3]))
        else:
                print "\nUsage: %s [Type] [Binary] [Junk_Length]\nType:\n arg = If the binary use argv\n get = If the binary use gets(), scanf() or other\n" % sys.argv[0]
 
+1 (6) -1 (0) Répondre


Sujets apparemment similaires…
Sujet Auteur Réponses Affichages Dernier message
  [Python]Situer mon niveau. InforMods 19 5,591 10-11-2016, 00h03
Dernier message: ZeR0-@bSoLu
  [PYTHON] un bot IRC basique darcosion 1 1,045 13-06-2016, 20h40
Dernier message: Yttrium
  [python] ANBU ::: TCP Session Hunter St0rn 2 1,279 25-02-2016, 18h45
Dernier message: otherflow
  [Python] Une autre façon de gérer les Virtualenv et Packages thxer 2 1,090 18-01-2016, 12h06
Dernier message: thxer
  [Python] rot script ark 9 2,738 08-03-2015, 00h37
Dernier message: ark
  [Python] Todo Manager ark 5 1,698 03-03-2015, 10h55
Dernier message: ark
  [python] Un décorateur pour inventorier les objets b0fh 1 1,217 04-12-2014, 17h50
Dernier message: thxer
  [python] UPnP Scanner St0rn 2 1,136 29-10-2014, 14h50
Dernier message: St0rn
  [Python] QuickHex thxer 9 2,519 15-08-2014, 20h26
Dernier message: sakiir
  Python : QuickBIn octarin 1 939 13-08-2014, 19h05
Dernier message: thxer

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut