URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 10433
[ Назад ]

Исходное сообщение
"По поводу статической линковки sqlite3"

Отправлено GOrilla , 06-Янв-23 13:10 
http://www.tinyware.ru/garbage/sqlite3-3.34.1.tar.gz
Debian 11 x86_64.
Пакет не отлаживал, почти по debian/rules.

Содержание

Сообщения в этом обсуждении
"По поводу статической линковки sqlite3"
Отправлено GOrilla , 06-Янв-23 13:20 
> http://www.tinyware.ru/garbage/sqlite3-3.34.1.tar.gz
> Debian 11 x86_64.
> Пакет не отлаживал, почти по debian/rules.

Пакеты тамже
http://www.tinyware.ru/garbage/


"По поводу статической линковки sqlite3"
Отправлено GOrilla , 06-Янв-23 15:40 
По проблемме dlopen.
Возьмем тестовую библиотеку без зависимостей ldd:

cat > liba.c

double cos(double arg)
{
    return 4.1234567890;
}

mkdir lib
gcc -shared liba.c -o lib/liba.so

Возьмем тестовую программу из man dlopen:


cat > test.c
#include <stdio.h>
#include <stdlib.h>
#include <dlfcn.h>
#define LIBM_SO "liba.so"
       int
       main(void)
       {
           void *handle;
           double (*cosine)(double);
           char *error;

           handle = dlopen(LIBM_SO, RTLD_LAZY);
           if (!handle) {
               fprintf(stderr, "%s\n", dlerror());
               exit(EXIT_FAILURE);
           }

           dlerror();    /* Clear any existing error */

           cosine = (double (*)(double)) dlsym(handle, "cos");

           /* According to the ISO C standard, casting between function
              pointers and 'void *', as done above, produces undefined results.
              POSIX.1-2001 and POSIX.1-2008 accepted this state of affairs and
              proposed the following workaround:

                  *(void **) (&cosine) = dlsym(handle, "cos");

              This (clumsy) cast conforms with the ISO C standard and will
              avoid any compiler warnings.

              The 2013 Technical Corrigendum 1 to POSIX.1-2008 improved matters
              by requiring that conforming implementations support casting
              'void *' to a function pointer.  Nevertheless, some compilers
              (e.g., gcc with the '-pedantic' option) may complain about the
              cast used in this program. */

           error = dlerror();
           if (error != NULL) {
               fprintf(stderr, "%s\n", error);
               exit(EXIT_FAILURE);
           }

           printf("%f\n", (*cosine)(2.0));
           dlclose(handle);
           exit(EXIT_SUCCESS);
       }
gcc -static test.c -ld
/usr/bin/ld: /tmp/ccpQ2mA7.o: в функции «main»:
test2.c:(.text+0x15): предупреждение: Using 'dlopen' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking

Запуститм в chroot е без каких-либо рантаймов.


sudo chroot . ./a.out
4.123457

И чего он нас предупреждает, если потянул бы рантайм от библиотеки а не от самого бинарника?


"По поводу статической линковки sqlite3"
Отправлено GOrilla , 06-Янв-23 15:47 
А glibc чем не угодила я так и не понял....


"По поводу статической линковки sqlite3"
Отправлено ACCA , 06-Янв-23 19:39 
Бывают системы с uClibc и без glibc.

"По поводу статической линковки sqlite3"
Отправлено GOrilla , 07-Янв-23 15:13 
> http://www.tinyware.ru/garbage/sqlite3-3.34.1.tar.gz
> Debian 11 x86_64.
> Пакет не отлаживал, почти по debian/rules.

Молодцы ребятя!!! Атака на /home успешна!!!! Пришлось роутер перезагружать и профиль файерфокса удалять...


"По поводу статической линковки sqlite3"
Отправлено GOrilla , 07-Янв-23 15:49 
>> http://www.tinyware.ru/garbage/sqlite3-3.34.1.tar.gz
>> Debian 11 x86_64.
>> Пакет не отлаживал, почти по debian/rules.
> Молодцы ребятя!!! Атака на /home успешна!!!! Пришлось роутер перезагружать и профиль файерфокса
> удалять...

Короче хакнули, молодцы. Говенный бытовой роутер. Предложу вам че по серьезней чуть попозже.