Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 24.01.2017, 19:44   #1
Ghost of Night
Форумчанин
 
Аватар для Ghost of Night
 
Регистрация: 08.08.2010
Адрес: Internet
Сообщений: 371
Репутация: 44
Восклицание 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 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


21:25.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru