Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.01.2017, 18:44   #1
Ghost of Night
Форумчанин
 
Аватар для Ghost of Night
 
Регистрация: 08.08.2010
Сообщений: 371
Восклицание libxml2 XXE

Всем доброго времени суток, есть код, на С для теста библиотеки libxml2 под Ubuntu 14.04:
Код:
#include <stdio.h>
#include <libxml/parser.h>
#include <libxml/tree.h>
#include <string.h>

static void example4Func(const char *filename) {
    xmlParserCtxtPtr ctxt;
    char data[10000] = "<!DOCTYPE root [ <!ENTITY ent SYSTEM \"file:///etc/passwd\"> ]><root><e>&ent;</e></root>";
    char user_data[10000];
    xmlChar *xmlbuff;
    xmlDocPtr doc; /* the resulting document tree */
    int len;
    xmlSAXHandler sax;

    xmlSAX2InitDefaultSAXHandler(&sax, 1);

    ctxt = xmlCreatePushParserCtxt(&sax, user_data, 0, 0, filename);
    if (ctxt == NULL) {
        fprintf(stderr, "Failed to create parser context !\n");
        return;
    }

    len = strlen(data);
    xmlParseChunk(ctxt, data, len, 1);

    doc = ctxt->myDoc;
    xmlFreeParserCtxt(ctxt);

    len = strlen(data);
    xmlDocDumpFormatMemory(doc, &xmlbuff, &len, 1);
    printf("%s\n", (char *) xmlbuff);

    xmlFree(xmlbuff);
    xmlFreeDoc(doc);
}

int main(int argc, char **argv) {
    example4Func("filename");

    xmlCleanupParser();

    return(0);
}
Компилю его следующей командой:
Цитата:
$ sudo gcc -I/usr/include/libxml2 xmltest_entity.c -lxml2
Но при исполнении получаю ошибку..
Цитата:
parser error : SAX.xmlSAX2EntityDecl(ent) called while not in subset
parser error : Memory allocation failed
filename:1: parser error : Entity 'ent' not defined
<!DOCTYPE root [ <!ENTITY ent SYSTEM "file:///etc/passwd"> ]><root><e>&ent;</e><
Смена версии libxml2 на более старую результата не принесла. Я не силён в Си и в libxml2. Поэтому прошу подсказать что я делаю не так?
Хакинг - не преступление, а способ выживания.
Ghost of Night вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск