Перейти к регистрации с возвратом в libc - PullRequest
1 голос
/ 03 июля 2011

Это уязвимый сценарий:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
char buffer[30];
strcpy(buffer, argv[1]);
return 0;
}

Я пытаюсь использовать этот сценарий как с ASLR, так и с NX.Я собирался использовать метод возврата к libc для ASLR, и мне было интересно, можно ли использовать метод перехода к регистру для перехода в библиотеку.Например, если местоположение библиотеки хранится в EAX, могу ли я указать обратный адрес для кода операции «перейти к EAX»?Или есть какой-либо другой способ обойти как ASLR, так и NX одновременно?Спасибо

Ответы [ 2 ]

0 голосов
/ 03 июля 2011

Ну, есть вызов кода операции (указатели на функции реализованы таким образом, в конце концов), но это не сильно поможет (и то, как вы в первую очередь получите адрес в eax, для меня загадка - это очень вряд ли думаю)

В конце концов, вам все равно нужно, чтобы стек был выполнимым (в противном случае сохраненный там код операции не принесет особой пользы) и знает его адрес, чтобы вы могли к нему перейти. Есть способы обойти эти средства защиты, но это не так просто - хотя я уверен, что вы можете найти достаточно статей по этой теме с небольшим поиском в Google - но если у вас есть возможность обойти ASLR и NX, вам не нужно возвращаться к libc атакует больше, потому что у вас уже есть контроль над системой.

0 голосов
/ 03 июля 2011

Я думал, что «возврат к libc» (или к любой библиотеке или программному коду) использовался для обхода NX.Так что я верю, что у вас есть это задом наперед.

ASLR используется для того, чтобы сделать атаку «возврат к libc» намного, намного труднее осуществить.Чтобы обойти ASLR, у вас должен быть способ найти местоположение библиотеки, например, с помощью уязвимости строки формата printf, или вам нужно запускать эксплойт сотни раз, пока вы не найдете правильное случайное местоположение.

...